インスタンスメソッド・定数・クラスプロパティ・クラスメソッド・プライベート変数の書き分け

メモ

インスタンスメソッドとクラスで使用する定数は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();
}