オブジェクトの新しいインスタンスに対してゲッター/セッターを自動的に定義するオブジェクトを作成しようとしています。セッターが値をnewValuesと呼ばれる別のオブジェクトプロパティに配置するようにします。次のコードスニペットで、prop1の値を設定すると、実際にはnewValues.prop1ではなくnewValues.prop2の値が設定されるのはなぜですか?
私はここで愚かなことをしていますか?私はほんの数時間の睡眠を取っているので、それは完全に可能です... :)
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'