當我直接訪問 age 屬性時,為什么控制臺列印 undefined 。我必須先列印 calcAge 函式才能獲得該值。
const Osama = {
firstName: 'osama',
lastName: 'Shaikh',
birthyear: 1999,
job: 'developer',
friends: ['michael', 'peter', 'steven'],
haslicense: true,
calcAge: function () {
this.age = 2021 - this.birthyear;
return this.age;
},
};
console.log(Osama.age);
uj5u.com熱心網友回復:
該物件age開始時沒有屬性。
您僅在運行該calcAge方法時分配它。
uj5u.com熱心網友回復:
好像你正在尋找一個分配getter的age屬性。
const Osama = {
birthyear: 1999,
get age() {
console.log('in getter');
return 2021 - this.birthyear;
},
};
console.log(Osama.age); // in getter, 22
console.log(Osama.age); // in getter, 22
或者,要僅在第一次訪問時計算年齡并將其替換為靜態屬性,您可以使用自覆寫getter。
const Osama = {
birthyear: 1999,
get age() {
console.log('in getter');
delete this.age;
return (this.age = 2021 - this.birthyear);
},
};
console.log(Osama.age); // in getter, 22
console.log(Osama.age); // 22
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373217.html
標籤:javascript 功能 目的 javascript对象
下一篇:如何在C#中重用物件?
