"data property" 是否在 javascript 内部有 "access property"?
Does "data property" have "access property" internally in javascript?
我了解到对象中有两种属性,数据属性和访问属性。
我们可以像这样访问“数据属性”而不需要“访问属性”:
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;
}
}
我说得对吗?
And I guess, when data property has created, access property has created internally
不,你不对。数据 属性 不包含 getter/setter。访问器 属性 不包含 space 来存储值。它不是一个就是另一个,它不像数据属性是访问器属性之上的一层或相反。
使用 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%; }
我了解到对象中有两种属性,数据属性和访问属性。
我们可以像这样访问“数据属性”而不需要“访问属性”:
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;
}
}
我说得对吗?
And I guess, when data property has created, access property has created internally
不,你不对。数据 属性 不包含 getter/setter。访问器 属性 不包含 space 来存储值。它不是一个就是另一个,它不像数据属性是访问器属性之上的一层或相反。
使用 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%; }