JavaScript权威指南(第6版)(中文版)--系列4(对象)

对象是JavaScript基本数据类型。

6.1创建对象。

可以通过对象直接量、关键字new和Object.create()函数来创建对象。

6.1.1 对象直接量。

列子:

var empty ={};                          //没有任何属性的对象。

var point = {x:0,y:0};                //两个属性。

var point2 = {x:point.x,y:point.y+1}   //更复杂的值。

var book = {

   "main title": "JavaScript",        // 属性名字里有空格,必须用字符串表示。

   'sub-title':"The Definitive Guide"    // 属性名字里有连字符,必须用字符串表示

   "for" : "all audiences",                     // "for是保留字,因此必须用引号"   

    author:{                                          // 这个属性的值是一个对象。

           firstname: 'David'                   //注意,这里的属性名都没有引号

}       

};

6.1.2 通过new创建对象。

new 运算符创建并初始化一个新对象。关键字new后跟随一个函数调用,这里的函数称作构造函数。

var o = new Object();   //创建一个空数组,和【】一样

var d = new Date();      //创建一个表示当前时间的date对象

6.1.3 原型

每一个JavaScript对象(null除外)都和另一个对象想关联,"另一个"对象就是我们熟知的原型,每一个对象都是从原型继承属性。

object.prototype 

通过关键字new和构造函数调用创建的对象的原型,就是构造函数的prototype的属性值。

6.1.4 Object.create();

它创建一个新对象,其中第一个参数是这个对象的原型第二个可选参数,用以对象的属性进行进一步描述。

var o1 = Object.create({x:1,y:2});            //o1继承了属性x和y

6.2 属性的查询和设置。

6.2.2 继承。

JavaScript对象具有"自有属性",也有一些属性是从原型对象继承而来的。

var o ={}         //o 从Object.prototype 继承对象的方法。

o.x =1;           // 给o定义一个属性x

var p = inherit(o);   // p继承o和Object.prototype

p.y=2;    // 给p定义一个属性y

var q = inherit(p)               // q继承p、o和object.prototype

q.z=3;                    // 给q定义一个属性y

var s = q.toString();       toString继承自Object.prototype

q.x+q.y             // 3   x和y分别继承自o和p

6.2.3 属性访问错误。

6.3 删除属性。

delete 运算符可以删除对象的属性。

6.4 检测属性。

in, hasOwnPreperty()和propertyIsEnumerable()

var o = {x:1}

"x" in o;        // true: "x"是o的属性。

"y" in o;         // false "y"不是o的属性。

"toString" in o;     // true: o 继承toString属性。

对象的hasOwnProperty()方法用来检测给定的名字是否对象的自有属性。对于继承属性它将返回false:

var o = {x:1}

o.hasOwnProperty("x")                   // true: o 有一个自有属性x

o.hasOwnProperty("y")                   // false:o中不存在属性y

o.hasOwnProperty("toString")        // false toString是继承属性。

6.5 枚举属性。

6.6 属性getter和setter

6.8 对象的三个属性。

6.8.1 原型属性。

要想检测一个对象是否是另一个对象的原型,请使用isPrototypeOf()方法。 

6.8.2 类属性。

6.9 序列化对象。

对象序列化是指对象的状态转换为字符串,也可以将字符串还原为对象。

内置函数JSON.stringify()和JSON.parse()用来序列化和还原JavaScript对象。

o = {x:1,y:{z:[false,null,""]}};                 // 定义一个测试对象。

s= JSON.stringify(o);                           // s是'{"x":1,"y":{"z":{false,null,""}}}';

p = JSON.parse(s);                             // p是o的深拷贝

6.10 对象方法

6.10.1 toString()方法

toString()方法没有参数,它将返回一个表示调用这个方法的对象值的字符串,在需要将对象转换为字符串的时候。

var s ={x:1,y:1}.toString();

6.10.2 toLocaleString() 方法

返回一个表示这个对象的本地化字符串。

6.10.3 toJSON() 方法。

6.10.4 valueOf()  方法。

原文地址:https://www.cnblogs.com/wcq12/p/9700149.html