インスタンスメソッド・定数・クラスプロパティ・クラスメソッド・プライベート変数の書き分け
メモ
インスタンスメソッドとクラスで使用する定数はprototypeオブジェクトに設定する。 このようにすることで内部的な効率がよくなるため。
var Person = function(name, gender){ this.name = name; this.gender = gender; } Person.prototype.getName = function(){return this.name}; Person.prototype.Const = "const";
クラスプロパティ・クラスメソッドはコンストラクタのプロパティに設定する。
Person.klassProperty = "クラスプロパティ"; Person.klassMethod = function() { ... };
プライベート変数はネストしたfunctionオブジェクトの中に設定する。
var Private = function(){ var private_var = 0; this.getPrivateVar = function(){ return private_var; } }
なお、このインスタンスメソッドのgetPrivateVar()はprototypeに設定できなかった。(prototypeで設定するとprovider_varが定義されていないとおこられる)
訂正:プライベート変数の例の関数をprototypeに設定できました。ちょっとラップしてますが。
次の記述になります。
var Private = function(){ var private_var = 0; this._getPrivateVar = function(){ return private_var; } } Private.prototype.getPrivateVar = function(){ return this._getPrivateVar(); }