プライベートなメンバを作る
プライベートメンバを作るには、どうするか?
プライベート・メンバを作るパターンが基本パターンとして次があげられる。
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' } >
すべてが参照ってのも怖いね。スコープの内部にアクセスできちゃうんですよね。
まぁ最近の更新で何か新機能が追加されてることを願おう