Ash*_*ana 1 javascript prototype ecmascript-6
我知道,所有的对象属性有一个名字,并且有类似的属性value,configurable,enumerable和writable.但是,在这个职位,我读了对象也有类似的属性prototype,class和extensible.
我知道该prototype属性用于指向父对象.但我不明白的是什么class属性?有这样的属性吗?并不是extensible一个对象的方法isExtensible()?
在这篇文章中,我读了对象也有类似的属性
prototype,class和extensible.
它们通常不被称为"属性",而是内部插槽.通常它们用双括号表示,以区别于正常属性,即[[prototype]],[[class]]和[[extensible]].
什么是[[class]]属性?有这样的属性吗?
不再是ES6了.[[class]]内部插槽包含有关该对象的内置类型(例如,Array,RegExp,内置包装器)的信息.Object.prototype.toString在对象上使用该方法时显示.(看看为什么Object.prototype.toString.call(foo)可以检测foo的类型?或者为什么`Object.prototype.toString`总是返回`[object*]`?以获取更多细节 - 这也是最好的方法在Array.isArray可用之前检测对象是否是数组.
从ES6开始,不再有这样的内部插槽,现在Object.prototype.toString依赖于Symbol.toStringTag机制.
并且不能像isExtensible()一样扩展对象的方法吗?
不,[[extensible]]内部插槽是isExtensible()访问的东西,Object.preventExtensions()可以设置.
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |