Javascript getter/setterか
-
19-09-2019 - |
質問
var author = {
firstname: 'Martin',
lastname: 'Hansen'
}
function settersGetters(propStr) {
for (var i = 0; i < propStr.length; i++) {
author['_'+ propStr[i]] = null;
author.__defineGetter__(propStr[i],
function() {
return author['_'+ propStr[i]];
});
author.__defineSetter__(propStr[i],
function(val) {
author['_'+ propStr[i]] = val;
});
};
}
上記のコードは結晶のように散りばをgetter/setterかせ属性の配列のオブジェクト。
しかし、以下のコードの両名と姓はオルセン..なぜですか?
settersGetters(['firstname', 'lastname']);
author.firstname = 'per';
author.lastname = 'olsen';
console.log(author.firstname);
console.log(author.lastname);
解決
の定義は閉鎖で作られているので、すべてのセッターは私の最後の値を使用しています。
の代わりにこれを使用します:
function setterGetter(property)
{
author['_'+ property] = null;
author.__defineGetter__(property,
function() {
return author['_'+ property];
});
author.__defineSetter__(property,
function(val) {
author['_'+ property] = val;
});
}
function settersGetters(propStr) {
for (var i = 0; i < propStr.length; i++) {
setterGetter(propStr[i]);
};
}
他のヒント
これは閉鎖問題、複数のもの人々が説明してくれた こちらの.
くラッピング i
参考内の数を読み漁りを抑止するためには、必要かものすべての助けにより、自白をとることだからです。
所属していません StackOverflow