03-对象属性的属性
21.2 对象属性的属性
此时,大家已经拥有了丰富的对象属性经验。大家知道它是以键值对的形式存在(键可以是字符串或者符号,值可以是任意类型);知道对象中各属性的顺序是无法保证的(数组或Map则是有序的);也知道两种访问对象属性的方式(成员访问符(.),以及计算的成员访问符([]))。最后,了解了三种使用对象字面符号来创建属性的方式(键作为标识符的常规属性、键是非标识符或符号可计算属性,以及方法快捷方式)。
不过,还有很多关于属性的知识需要了解。尤其是,它可以有一些自己的属性来控制其在所属对象中的行为。下面用刚才学到的知识创建一个字段(译者注:原文中是property,原翻译为“属性”,为避免“属性的属性”引起混淆,所以此处翻译为“字段”),然后通过 Object.getOwnPropertyDescriptor 来测试它具备的属性:
const obj = { foo: "bar" };
Object.getOwnPropertyDescriptor(obj, 'foo');
返回结果如下:
{ value: "bar", writable: true, enumerable: true, configurable: true }
字段的属性、属性描述符,以及属性配置这些术语可以互相替换使用,因为它们指的是相同内容。
以上信息暴露了这个字段的三个属性:
字段的属性、属性描述符,以及属性配置这些术语可以互相替换使用,因为它们指的是相同内容。