gpt4 book ai didi

javascript - 如何使用 Object.defineProperties?

转载 作者:行者123 更新时间:2023-11-30 11:40:37 26 4
gpt4 key购买 nike

大家好,最近看了Professional.JavaScript.for.Web.Developers.3rd.Edition。这是我从中学到的代码。但是,输出与我阅读的书不同。当我运行下面的代码时,book.edition 是 1book._year 是 2004 年,book.year 是 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;
}
}
}
});

book.year = 2005;
console.log(book.edition);
console.log(book._year);
console.log(book.year);

最佳答案

对象的 _yearedition 属性应定义为可写。否则在 year's setter 中重新定义它们是没有用的。

var book = {};

Object.defineProperties(book, {
_year: {
value: 2004,
writable:true
},
edition: {
value: 1,
writable:true
},

year: {

get: function() {
return this._year;
},

set: function(newValue) {

if (newValue > 2004) {
this._year = newValue;
this.edition += newValue - 2004;
}
}
}
});


console.log(book.edition);
console.log(book.year);
book.year=2005;
console.log(book.edition);
console.log(book.year);

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

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