タグ: 未設定

プライベート変数 : JavaScript

投稿日 : 2012年1月26日 | 更新日 : 2012年01月27日 前のページへ戻る

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で同じことができればそちらの方が効率的。

JavaScript | 固定リンク | Comments (0)

関連記事

    関連記事は見つかりませんでした。
    検索ボックスからの検索もお試しください。

このページの上へ移動

コメント

コメントはまだありません。

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。

 

 

 


トラックバックURL

http://www.findxfine.com/programming/javascript/995555268.html/trackback

このページの上へ