"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%; }