尝试使用访问器定义属性时出现错误。这是我的代码
var person = {};
Object.defineProperty(person, 'birthYear', {
value: 1997,
writable: true,
enumerable: true,
configurable: false,
set: function (value) {
this.birthYear = value;
},
get: function() {
return 'Birth year - ' + this.birthYear;
}
});
console.log(person.birthYear);
错误文本:
属性描述符无效。不能同时指定访问器和值
或可写属性。
如果我无法定义这样的 set 和 get 方法,我该怎么做?
查看错误信息:
不能同时指定访问器和值或可写属性。
当您明确说明尝试写入属性时会发生什么时,说属性是否可写是没有意义的。
所以删除:
writable: true,
而且你不能给它一个值,当你读取它时动态计算该值,所以删除:
value: 1997,
然后你会得到一个关于递归的错误,因为每次你尝试读取person.birthYear
,你的 getter 函数尝试读取person.birthYear
.
因此,将值存储在其他地方。
var person = { _birthYear: 1997 };
Object.defineProperty(person, 'birthYear', {
enumerable: true,
configurable: false,
set: function (value) {
this._birthYear = value;
},
get: function() {
return 'Birth year - ' + this._birthYear;
}
});
console.log(person.birthYear);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)