gpt4 book ai didi

javascript - 如何使用Object.defineProperties()?

转载 作者:行者123 更新时间:2023-12-01 01:30:51 28 4
gpt4 key购买 nike

下面我尝试使用defineProperties函数定义对象的属性,但是当我打印此脚本中的最后一行时,我得到了意外的结果。我希望在控制台上记录 2005 年,但我不断收到 2004 年。这同样适用于其他属性,例如版本。我使用这个定义属性吗 功能不正确?

var book = {};
Object.defineProperties(book, {
_year: {
value: 2004
},
edition: {
value: 1
},
year: {
get: function() {
return this._year;
},
set: function(newValue) {
if (newValue > 2004) {
this._year = newValue;
this.edition += newValue - 2004;
}
}
}
});


console.log(book);
console.log(book.year);

book.year = 2005;

console.log(book);
console.log(book.year);

最佳答案

您将 _year 定义为只读,因此 this._year = newValue 失败(静默)。您需要使其可写。

  _year: {
value: 2004,
writable: true
},

关于javascript - 如何使用Object.defineProperties()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com