comtecです。

privilegedメソッドが話題に挙がったので調べてみた。


var Test = function(arg){

  var private = function(){...};

  this.privileged = function(param){
    this.private.call(arg[param]);
    return arg[param];
  }

  this.init.call(this);
}

Test.prototype = {

  method : function(){
    var public = this.privileged("test");
    ...
  }
}

var test = new Test({
  arg1: ...,
  arg2: ...
});

クロージャーを用いたprivateなメンバの実装ってことなのだろう。
コンストラクタ内でthisを使ったメソッドを使うことでprivateなメンバにアクセスできる。
privilegeを通したアクセスしか許可できなくする。

publicなメソッドなどで勝手にアクセスしたり変更できないようにできる。
細かい効果などの設定や変更も散らばることがなくprivilegeメソッド内の変更だけで簡潔できる。
条件内ならprivateなメンバを変更できるっていう制限もできるってことかな。

んー、まだきちんと噛み砕ききれてない。
中途半端になったがそろそろ寝ないと。
まとまったらまた書きます。