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;
});
};
}
上面的代码有望为对象作者的任何提供的属性(在数组中)生成 setters/getters。
但是当我调用下面的代码时,名字和姓氏都是 olsen..我做错了什么?
settersGetters(['firstname', 'lastname']);
author.firstname = 'per';
author.lastname = 'olsen';
console.log(author.firstname);
console.log(author.lastname);
最佳答案
我怀疑这是一个关闭问题,几个乐于助人的人向我解释了这个问题 here .
尝试将 i
引用包装在一个函数中,并阅读闭包。尽管提供了所有帮助,但我承认我仍然不太了解它们。
关于Javascript setter / getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433182/