プライベート変数 : JavaScript
JavaScriptのオブジェクトで変数をプライベートにするメモ。varを使いローカル変数にする
// xを参照できない。
var Foo = function(value) {
var x = 'Private ' + value;
this.y = 'Public ' + value;
};
Foo.prototype.getValue = function() {
// return x; x is not defined
return this.y;
};
var f1 = new Foo('f1');
console.log(f1.getValue()); // Public f1
// xを参照できるが値は全てのインスタンスで共有
// Bar.prototype.getValueがクロージャーになる
var Bar = function(value) {
var x = 'Private ' + value;
this.y = 'Public ' + value;
// プロトタイプメソッド
Bar.prototype.getValue = function() {
return x + ' / ' + this.y;
}
}
var b1 = new Bar('b1');
console.log(b1.getValue()); // Private b1 / Public b1
var b2 = new Bar('b2');
console.log(b2.getValue()); // Private b2 / Public b2
console.log(b1.getValue()); // Private b2 / Public b1 ※Privateはb2
// getValueをインスタンスメソッドにして各インスタンスごとに値を保持
var Hoge = function(value) {
var x = 'Private ' + value;
this.y = 'Public ' + value;
// インスタンスメソッド
this.getValue = function() {
return x + ' / ' + this.y;
}
}
var h1 = new Hoge('h1');
console.log(h1.getValue()); // Private h1 / Public h1
var h2 = new Hoge('h2');
console.log(h2.getValue()); // Private h2 / Public h2
console.log(h1.getValue()); // Private h1 / Public h1 ※Privateはh1
インスタンスメソッドは各インスタンスがメソッドを持つことになるのでプロトタイプチェーンで参照されるprototypeで同じことができればそちらの方が効率的。
関連記事
- 関連記事は見つかりませんでした。
検索ボックスからの検索もお試しください。
コメント
コメントはまだありません。
コメントの投稿
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。
トラックバックURL
http://www.findxfine.com/programming/javascript/995555268.html/trackback