正如问题中所述,在JavaScript中,对象存储在哪里是否可扩展?JavaScript对象存储在哪里可扩展与否?
属性值可以通过Object.isExtensible()
访问,但是这个信息存储在哪里?
谢谢!
正如问题中所述,在JavaScript中,对象存储在哪里是否可扩展?JavaScript对象存储在哪里可扩展与否?
属性值可以通过Object.isExtensible()
访问,但是这个信息存储在哪里?
谢谢!
在其[[Extensible]]
internal slot,它不能直接从您的代码访问(但当然,可通过Object.isExtensible
和Reflect.isExtensible
访问)。
从链接:
每个普通对象具有控制性能是否可以被添加到所述对象的布尔值[[扩展]]内部槽。如果[[Extensible]]内部插槽的值为false则可能不会将其他属性添加到该对象。另外,如果[[Extensible]]为false对象的[[Prototype]]内部插槽的值可能不会被修改。一旦对象的[[Extensible]]内部插槽的值已设置为false后面可能不会更改为true。
内部插槽有点像属性,但不是继承的,不能从程序代码中直接访问(直接)。从Object Internal Methods and Internal Slots:
内部插槽对应于与对象关联并由各种ECMAScript规范算法使用的内部状态。内部插槽不是对象属性,它们不会被继承。根据具体的内部插槽规范,此类状态可能由任何ECMAScript语言类型或特定ECMAScript规范类型值的值组成。除非另外明确指定,否则内部插槽将作为创建对象的过程的一部分进行分配,并且可能不会动态添加到对象中。除非另有规定,否则内部插槽的初始值是未定义的值。本规范中的各种算法创建具有内部插槽的对象。但是,ECMAScript语言不提供将内部插槽与对象关联的直接方式。