目次

オブジェクトなJavaScriptの基礎講座

インスタンス変数とクラス変数

◆ はじめに

『new演算子の謎』でいろいろテストをしましたが、その後の報告です。

まず、切り口をインスタンス変数、クラス変数から行ってみましょう。

◆ インスタンス変数

function testForNew_01(){
        this.method = function(name) {
                    return name;
        }
        this.property = "chaichan";
} 
obj = new testForNew_01();

インスタンス変数は、obj.property です。

つまり、new演算子でインスタンス化されてから有効になる変数です。

また、obj.methodをインスタンスメソッドといいます。

◆ クラス変数

function testForNew_05(){
        testForNew_05.method = function(name) {
                    return name;
        }
        testForNew_05.property = "chaichan";
} 
new testForNew_05();

クラス変数は、testForNew_05.property です。

このように、関数名で修飾した変数をクラス変数といいます。(グローバル変数に相当する)

また、関数名で修飾したメソッド testForNew_05.method をクラスメソッドといいます。

そして、new testForNew_05();ですが、実は、new演算子は必ずしも必要でなく、testForNew_05();の関数コールのみでも大丈夫です。newしているのは、イマイチわかりません...。(元々は、私のロジックでないため)

◆ 結論

ということで、クッキーオブジェクトNJCookieやJCookieは、クラス変数、クラスメソッドを利用したオブジェクトだったのです。

このように、オブジェクト名を任意にしたくない場合やクッキーのI/O(入出力)等の機能が明確唯一の場合等の時は、クラス変数、クラスメソッドを利用した方がオブジェクト(プログラム)が明確になると思います。

尚、インスタンス変数、クラス変数に関しては、以下の本に詳しく載っています。

しかし、はじめからこの本で勉強していればよかった...。とにかく、文句なしに良い本です。ちなみに、JavaScriptでは、はじめて、薦められる本に出会いました。

目次