对象特性(object attribute)有哪些?分别有什么含义?
对象除了包含属性外还拥有三个相关的对象特性:
- 原型 prototype: 指向另外一个对象,本对象的属性继承自它的原型对象
通过Object.getPropertyOf($object)
可以获取对象的原型对象,或者通过非正式的$object.__proto__
获取对象的原型对象 - 类 class: 标志对象类型的字符串
通过 toString 方法获取第8到倒数第二个位置之间的字符可以获取1
2
3
4
5function classof(o) {
if (o === null) return 'Null';
if (o === undefined) return 'Undefined';
return Object.prototype.toString.call(o).slice(8, -1);
} - 扩展标记 extensible flag: 指明了是否可以向该对象添加新属性
通过Object.isExtensible($object)
来判断该对象是否可扩展,通过Object.preventExtensions($object)
来将对象设置成不可扩展的。
tips:Object.seal($object)
可以将对象设置为不可扩展且所有自有(非继承)属性不能删除与配置。
通过 Object.isSealed($object)
判断对象是否被封闭。
Object.freeze($object)
可以将对象设置为不可扩展、不可配置且所有自有(非继承)属性设置为只读。
通过 Object.isFrozen($object)
判断对象是否冻结。