ECMAScriptJavaScript权威设计–JavaScript对象(简要学习笔记八)

1.属性的性状

一个属性包含一个名跟4独特色。4独特色:值,可写性,可枚举性,可配置性

 

2.靶的老三只属性

同等:原型属性

要是想检测一个靶是不是是另外一个对象的原型,使用isPrototypeOf()方法

如:

var P={x=1};    //定义一个原型对象
var o=Object.create(p);    //使用这个原型对象创建一个对象
p.isPrototypeOf(o)    //true:o继承自p
Object.isPrototypeOf(p)    //true:p继承自Object.prototype

 

二:类属性

规定类属性函数:classof()

function classof(o){
    if(o===null){
        return "Null";
    }
    if(o===undefined){
        return "Undefined";
    }
    return    Object.prototype.toString.call(o).slice(8,-1);
}

运行:

classof(null)    //"Null"
classof(1)    //"Number"
classof("")    //"String"
classof(new f())    //"Object"
classof(windoe)    //"Window"(这是客户端宿主对象)

 

老三:可扩展性

对象的但是扩展性表示是否可以于目标上加新属性。

在ECMAScript5着拥有的置对象同由定义对象还是可扩大的。

可扩展性的目的是拿目标“锁定”,以避免外界的打扰。

采取Object.esExtensible()来判定目标是不是是可扩大的。

利用Object.preventExtensible()将对象转换为不可扩展的。一旦以对象转换为不可扩展的口舌就无法转移为可扩大的了。

 

季:序列化对象

本着序列化是凭将目标的状态转换为字符串,也可是将字符串还原为对象。

ECMAScript5提供了内置函数JSON.stringify()与JSON.parse()

如:

o={
    x:1,
    y:{
        z:[false,null,""]    
    }
}
s=JSON.stringify(o)    //'{"x":1,"y":{"z":[false,null,""]}'
p=JSON.parse(s)    //p是o的深拷贝