私はそれを正しく理解しているかどうかわかりません。
この例は、MDN (Mozilla Developer Network) から直接引用したものです。
var bValue;
Object.defineProperty(o, "b", {get : function(){ return bValue; },
set : function(newValue){ bValue = newValue; },
enumerable : true,
configurable : true});
何が起こるかというと、bValue という名前のグローバル変数が作成されますが、これは行われません。この例は使用方法を示すだけであることを理解しています。したがって、グローバル変数を作成しても問題ありません。this
ただし、これをアプリケーションで使用する場合は、次のキーワードを追加して、少し変更します。
Object.defineProperty(o, "b", {get : function(){ return this.bValue; },
set : function(newValue){ this.bValue = newValue; },
enumerable : true,
configurable : true});
これで、オブジェクトo
はプロパティを持ちb
、同時に別のプロパティも持ちますbValue
。ユーザー (プログラマー) は 'b' のみに公開され、'bValue' には公開されませんが、bValue に直接アクセスすることはできます。これを防ぐ方法がわかりません。
b
プロパティとプロパティbValue
が常に同じであるとは限らずb
、値に依存することを理解しています。bValue
これは、ゲッターとセッターにより、値を に割り当てる前に bValue を前処理できるためb
です。
主な質問は、正しく理解できているかどうかです。それとも、ここで何か不足していますか?