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;
});
};
}
上記のコードは、オブジェクトの作成者に (配列で) 提供されたプロパティのセッター/ゲッターを生成することを願っています。
しかし、以下のコードを呼び出すと、ファーストネームとラストネームの両方がオルセンです..何が間違っていますか?
settersGetters(['firstname', 'lastname']);
author.firstname = 'per';
author.lastname = 'olsen';
console.log(author.firstname);
console.log(author.lastname);