【发布时间】:2016-09-25 15:32:10
【问题描述】:
【问题讨论】:
标签: javascript oop object immutability
【问题讨论】:
标签: javascript oop object immutability
在它的[[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 规范类型值组成。除非另有明确规定,否则内部插槽是作为创建对象过程的一部分分配的,并且可能不会动态添加到对象中。除非另有说明,否则内部槽的初始值是未定义的值。本规范中的各种算法创建具有内部槽的对象。但是,ECMAScript 语言没有提供将内部槽与对象关联的直接方法。
【讨论】: