我正在学习PropertyDescriptors。为什么我在以下代码中获得ReferenceError
?我有一个对象y
。我想在其中定义一个属性foo
,并创建了get
和set
个函数。
// Equivalent definition of 'foo' using a PropertyDescriptor
var y = {};
Object.defineProperty(y, 'foo', {
get: function() {
console.log('in y.foo getter');
return this.foo;
},
set: function() {
console.log('in y.foo setter. value = ' + value);
return this.foo;
},
enumerable: true,
configurable: true
});
y.foo=1
console.log(y.foo)
答案 0 :(得分:1)
试试以下内容。你没有在set
函数中传递参数。此外,设置函数应该set
variable
中的值,而不是像get
var y = {};
Object.defineProperty(y, 'foo', {
get: function() {
console.log('in y.foo getter');
return foo;
},
set: function(value) {
console.log('in y.foo setter. value = ' + value);
foo = value;
},
enumerable: true,
configurable: true
});
y.foo = 1
console.log(y.foo)

答案 1 :(得分:0)
set: function(value) {
console.log('in y.foo setter. value = ' + value);
foo = value;
},
另外,请使用foo
代替this.foo
。
这里给出了工作片段:
// Equivalent definition of 'foo' using a PropertyDescriptor
var y = {};
Object.defineProperty(y, 'foo', {
get: function() {
console.log('in y.foo getter');
return foo;
},
set: function(value) {
console.log('in y.foo setter. value = ' + value);
foo = value;
},
enumerable: true,
configurable: true
});
y.foo = 1
console.log(y.foo)