それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

JavaScriptでプライベートな変数やメソッドを作る

プライベートなメンバを作る

プライベートメンバを作るには、どうするか?

プライベート・メンバを作るパターンが基本パターンとして次があげられる。

function Phone() {
  //プライベート・メンバ
  var name = 'Xperia'
  //パブリック・メンバ
  this.getName = function(){
    return name;
  }
}

プライベートな変数を作るのに、変数のスコープを使う。

まぁ、出来るんだけど、スコープの限界があるんので そこは仕方ないかもね

実行例はこちら

> my_phone = new Phone
Phone { getName: [Function] }
> my_phone.name
undefined
> my_phone.getName()
'Xperia'
>

ただしここも参照コピー問題。

function Phone() {
  //プライベート・メンバ
  var info = {name:"Xperia"}
  //パブリック・メンバ
  this.getInfo = function(){
    return info;
  }
}
my_phone = new Phone
var i = my_phone.getInfo();
i.my_name = 'takuya'
my_phone.getInfo()

実行結果

> var i = my_phone.getInfo(); 
> i
{ name: 'Xperia' }
> i.my_name = 'takuya'
'takuya'
> my_phone
Phone { getInfo: [Function] }
> my_phone.getInfo()
{ name: 'Xperia', my_name: 'takuya' }
>

すべてが参照ってのも怖いね。スコープの内部にアクセスできちゃうんですよね。

まぁ最近の更新で何か新機能が追加されてることを願おう