我期待看到:
设置
获取
15
有人可以向我解释为什么这段代码不起作用?感谢
var myObj = new MyObj();
function CreateSimpleProperty(propertyName) {
Object.defineProperty(myObj, propertyName, {
set: function (aVal) {
this[propertyName] = aVal;
console.log("Setting");
},
get: function () {
console.log("Getting");
return this[propertyName];
}
});
}
CreateSimpleProperty("TEST");
Overlay.TEST = 15;
console.log(Overlay.TEST);
答案 0 :(得分:0)
嗯,首先,Overlay
应该是myObj
吗?假设是这样,你的代码将以无限循环结束,因为你的setter中的this[propertyName] = aVal;
将无限地为自己调用setter。您需要以其他方式存储该值。在这里,我已将其保存到_TEST
,如下所示。
这是代码和工作jsFiddle:http://jsfiddle.net/rgthree/3s9Kp/
var myObj = {};
function CreateSimpleProperty(propertyName) {
Object.defineProperty(myObj, propertyName, {
set: function (aVal) {
this['_'+propertyName] = aVal;
console.log("Setting");
},
get: function () {
console.log("Getting");
return this['_'+propertyName];
}
});
}
CreateSimpleProperty("TEST");
myObj.TEST = 15;
console.log(myObj.TEST);
(显然,我不知道你的MyObj
是什么或Overlay
来自哪里,所以我也为这个例子做了修复。