1
皆、私は最近Professional.JavaScript.for.Web.Developers.3rd.Editionを読んでいます。ここで私はそれから学ぶコードです。しかし、出力は私が読んだ本とは異なります。以下のコードを実行すると、book.edition is 1
、book._year
は2004、book.year
は2004です。どうすればよいですか?Object.definePropertiesの使用方法は?
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);
予想される動作は何ですか? –
それは私にとって正しい出力のようです。 'book._year'は変数を直接取得し、' book.year'は '_year'を返すゲッター関数ですので、両方とも同じ値を返すべきです – Jayce444
@ Jayce444 2004年の代わりに2005年を返すべきです。 2である。 –