我知道物件中有兩種型別的屬性,資料屬性和訪問屬性。
我們可以在沒有“訪問屬性”的情況下訪問“資料屬性”,如下所示:
const person = {
name: 'Pecan'
};
console.log(person.name) // getting name data property
person.name = 'Pie' // setting name data property
而且我猜,當資料屬性創建時,訪問屬性已經在內部創建了這樣的“名稱”:
const person = {
name: 'Pecan',
get name() {
return this.name;
},
set name(name) {
this.name = name;
}
}
我對嗎?
uj5u.com熱心網友回復:
而且我猜,當資料屬性創建時,訪問屬性已經在內部創建
不,你不對。資料屬性不包含 getter/setter。訪問器屬性不包含存盤值的空間。它是一個或另一個,它不像資料屬性是訪問器屬性或相反的一層。
它可能有助于Object.getOwnPropertyDescriptor查看兩種不同的物件文字撰寫方式生成的內容:
const personData = {
name: 'Pecan',
}
let personAccessorName = 'Pecan';
const personAccessor = {
get name() {
return personAccessorName ;
},
set name(name) {
personAccessorName = name;
}
};
console.log('data property', Object.getOwnPropertyDescriptor(personData, 'name'));
console.log('accessor property', Object.getOwnPropertyDescriptor(personAccessor, 'name'));
div.as-console-wrapper { max-height: 100%; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/407190.html
標籤:
