我想創建一個對象,自動爲對象的新實例定義getters/setters。我希望setter將這些值放入一個名爲newValues的獨立對象屬性中。爲什麼在下面的代碼片段中設置prop1的值實際上是設置newValues.prop2的值而不是newValues.prop1的值?用Javascript getter/setters怪異的行爲
我在這裏做些傻事嗎?這是完全可能的,因爲我只在睡眠幾個小時... :)
var Record = function(data) {
this.fieldValues = {}
this._data = data;
var record = this;
for(var key in data) {
record.__defineGetter__(key, function() {
return record._data[key];
});
record.__defineSetter__(key, function(val) {
record.fieldValues[key] = val;
});
}
}
var myRecord = new Record({prop1: 'prop1test', prop2: 'prop2test'});
myRecord.prop1 = 'newvalue';
console.log(myRecord.fieldValues.prop1); // undefined
console.log(myRecord.fieldValues.prop2); // 'newvalue'
非常感謝。愚蠢的錯誤。 –
拯救生命。你節省了我的一週。女孩和啤酒給你 –