答案 0 :(得分:3)
在[[Extensible]]
internal slot中,无法直接从您的代码访问(但当然可以通过Object.isExtensible
和Reflect.isExtensible
访问)。
从链接:
每个普通对象都有一个布尔值[[Extensible]]内部插槽,用于控制是否可以将属性添加到对象中。如果[[Extensible]]内部插槽的值为 false ,则可能无法向对象添加其他属性。此外,如果[[Extensible]] false ,则不能修改对象的[[Prototype]]内部插槽的值。一旦对象的[[Extensible]]内部插槽的值设置为 false ,它可能不会随后更改为 true 。
内部插槽有点像属性,但不是继承的,也不能从程序代码中直接访问。来自Object Internal Methods and Internal Slots:
内部插槽对应于与对象关联并由各种ECMAScript规范算法使用的内部状态。内部插槽不是对象属性,不会继承它们。根据特定的内部插槽规范,此状态可能包含任何ECMAScript语言类型或特定ECMAScript规范类型值的值。除非另有明确说明,否则内部插槽将作为创建对象的过程的一部分进行分配,并且可能无法动态添加到对象。除非另有说明,否则内部槽的初始值为undefined值。本规范中的各种算法创建具有内部插槽的对象。但是,ECMAScript语言没有提供将内部插槽与对象关联的直接方法。