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

1.属性的性情

贰性情质包括三个名字和伍个特色。4性意况:值,可写性,可枚举性,可配置性

 

2.对象的多少个属性

一:原型属性

要想检查和测试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的深拷贝