JavaScript基础之六(Objects,原型prototype)

1.本地对象:Array,function,date,RegExp等,浏览器对象,HTMLDocument等(host对象,也称为本地对象

2.除了string,Number,boolean,null,undefined之外的称为Object。ES5里面可以忽略最后的逗号,ES3大部分都会忽略,但是IE里面会报错。ES5里面要求name加引号。

  推荐对象的写法:name和value都加上引号,尾部的逗号去掉

3.创建对象的2种方式

  1)直接写{}  2)使用new:new后面跟对象(),这样会调用对象的构造函数创建一个对象

4.使用new创建创建一个对象,构造函数会使用prototype值作为该对象的原型。例如new Array()就会使用Array.prototype作为原型。Object.prototype是一个特殊的对象,它没有原型,它不继承任何属性或方法。所有的对象继承Object的原型。所以当我们创建一个new Array(),会同时继承Array.prototype和Object.prototype。原型与原型之间的联系成为原型链

5.ECMAScript5定义了方法来创建对象:Object.create(), var obj=Object.create({"x":"1","y":"2"});obj会继承里面的属性,如果Object.create(null),那不会继承任何属性。如果想实现和{},new Object()一样的效果,可以Object.create(Object.prototype); 

6.(ES5)使用Object.getPrototypeOf(obj)可以查询任何对象的原型,对象的构造函数constructor下面有一个属性prototype指定其具体的原型。Object.create()里面的第一个参数作为创建对象的原型。

7.对象的class属性是一个字符串,但是目前没有可以直接设置和获取的途径,只能间接获取对象类型。使用Object.prototype.toString.call(obj).slice(8,-1);这里提取一个通用的方法如下:

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

8.对象是否可扩展属性extensible:能否向一个对象添加新的属性。默认情况下所有的对象都是可扩展的。

判断一个对象是否可扩展:Object.isExtensible(obj)。设置一个对象不可扩展:Object.preventExtensions(obj)

1)Object.seal(obj):当前对象不可扩展,配置,删除。判断用:Object.isSealed(obj)

2)Object.freeze(obj):封闭程度更深,不可扩展,不可配置,不可删除,不可修改,只能读取。判断用:Object.isFrozen(obj)

9.对象序列化:把Object转换为string,并且可以反序列string到Object。ES5里面提供了两个对应的方法——①序列化JSON.stringify(obj),②反序列JSON.parse(obj)。向后兼容可以引入一个json2.js. 把对象序列化为json字符串的过程中,这些属性NaN,Infinity,-Infinity会被转换为null。Date会被转换为ISO格式。如果碰到不能被序列化的属性,则忽略。

10.Object涉及的方法:hasOwnProperty(),  propertyIsEnumerable(),  isPrototypeOf(),  Object.create(),  Object.getPrototypeOf()

  1)toString():Object.prototype里面的这个方法没什么太多作用。常常会被其他的对象来重写。比如Array.toString,Date.toString(),Function.toString().

  2)toLocalString():返回一个对象的本地string

  3)toJSON():不是定义在Object.prototype上的方法,JSON.stringify()会寻找被序列化对象上的这个方法,如果有则调用。

  4)valueOf():Object转换为基本类型时调用

 

你可能感兴趣的:(JavaScript基础之六(Objects,原型prototype))