javascript对象的标签
[[proto]]标签
[[class]]标签
[[class]] 标签,代表这对象是哪个类型的。在js中不能直接访问到。可以通过Object.prototype.toString.call(obj)间接获取对象的类型
Object.prototype.toString.call(1).slice(8,-1); //"Number"
Object.prototype.toString.call("1").slice(8,-1); //"String"
Object.prototype.toString.call(new Object()).slice(8,-1); //Object
Object.prototype.toString.call(new Array).slice(8,-1); //Array
Object.prototype.toString.call(null).slice(8,-1); //null
Object.prototype.toString.call(undefined).slice(8,-1); //"Undefined"
Object.prototype.toString.call(true).slice(8,-1); //"Boolean"
[[extensible]]标签
[[extensible]] 标签对象上的属性,是否可以被继续添加
var obj = {x:1,y:2}
Object.isExtensible(obj) //true 是否可以扩展
Object.preventExtensions(obj) //阻止扩展
obj.z = 90
obj //Object {x: 1, y: 2}
obj.z //undefined
Object.seal(obj); //将对象上所有的属性 变成 不可配置
Object.getOwnPropertyDescriptor(obj,'y') //Object {value: 2, writable: true, enumerable: true, configurable: false}
Object.getOwnPropertyDescriptor(obj,'x') //Object {value: 1, writable: true, enumerable: true, configurable: false}
Object.isSealed(obj); //true
var o = {x:1,y:2};
Object.freeze(o); 、//将对象上所有属性 变为不可写,不可配置
Object.isFrozen(o) //true
Object.getOwnPropertyDescriptor(o,'x') //Object {value: 1, writable: false, enumerable: true, configurable: false}
Object.getOwnPropertyDescriptor(o,'y') //Object {value: 2, writable: false, enumerable: true, configurable: false}