タグ: 未設定

カプセル化 : JavaScript

投稿日 : 2012年2月22日 | 更新日 : 2012年03月07日 前のページへ戻る

JavaScriptは明示的にアクセス権を設定できない。クロージャーを使うことでカプセル化を行うことはできる。

// 外側の関数の引数が自由変数になるためクロージャーから参照できる例。
function foo(value) {
    return function() {
        value = value * 2;
        return value;
    };
}
var c = foo(2);
console.log(c()); // 4
console.log(c()); // 8
console.log(c()); // 16


// クロージャーを使い外部から変更できない変数(外側の引数value)を設定
function bar(value) {
    return function() {
        return value;
    };
}

var d = bar(5);
console.log(d()); // 5

// d関数に新たにプロパティvalueを設定。
// クロージャーが参照するbar関数のvalueは変更されない。
d.value = 50; 
console.log(d()); // 5のまま


// 外部からカプセル化した変数をの操作が必要な場合には外部に操作用関数(特権メソッド)を提供する
// _getはクロージャーになっておりvalueにアクセスできる
function baz(value) {
    function _get() {
        return value;
    }
    var o = {
        getValue: _get
    };
    return o;
}
var obj = baz(10);
console.log(obj.getValue()); // 100
obj.value = 1000; // 外部からはbarの引数valueを直接操作できない。
console.log(obj.getValue()); // 100 特権メソッド_getで参照。

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

関連記事

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

このページの上へ移動

コメント

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

コメントの投稿

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

 

 

 


トラックバックURL

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

このページの上へ