I understood that there are two types of property in object, data property and access property.
And we can access to "data property" without "access property" like this:
const person = {
name: 'Pecan'
};
console.log(person.name) // getting name data property
person.name = 'Pie' // setting name data property
And I guess, when data property has created, access property has created internally with the "name" like this:
const person = {
name: 'Pecan',
get name() {
return this.name;
},
set name(name) {
this.name = name;
}
}
Am I right?
CodePudding user response:
And I guess, when data property has created, access property has created internally
No, you're not right. A data property does not contain a getter/setter. And an accessor property does not contain a space to store a value. It's either one or the other, it's not like data properties are a layer over accessor properties or the other way round.
It might help to use Object.getOwnPropertyDescriptor to see what the two different ways of writing that object literal generate:
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%; }
