【发布时间】:2013-11-28 11:28:29
【问题描述】:
我想在第一次初始化对象时设置属性 x,然后调用 Object.defineProperty。如果我尝试首先访问 foo.x,控制台会告诉我“未定义值”。
var foo = {x:20};
Object.defineProperty(foo, "x", {
writeable: true,
enumerable: true,
configurable: true,
get: function(){
console.log("Get X value");
return value;
},
set: function(newValue){
console.log("Set X value");
value = newValue;
}
});
console.log(foo.x); // **Uncaught ReferenceError: value is not defined**
foo.x = 1;
console.log(foo.x);
foo.x = 10;
console.log(foo.x);
【问题讨论】:
-
因为你的 getter 和 setter 中的
value是一个未定义的变量。即使你想以某种方式“引用它自己”,你也必须定义它。查看the examples on MDN aboutobject.defineProperty()。