JavaScript中创建对象的三种方法,重点讲解新方法Object.create()

作者:admin     字体:[增加 减小]    类型:原创
JavaScript中创建对象有三种方法,使用直接量,使用new创建对象,使用Object.create()方法。

一、对象直接量创建对象

对象直接量是一个表达式,这个表达式的每次运算都创建并初始化一个新的对象。每次计算对象直接量的时候,也都会计算它的每个属性的值。也就是说,如果在一个重复调用的函数中的循环体内使用了对象直接量,它将创建很多新对象,并且每次创建的对象的属性值也有可能不同。下面是一些示例

var empty = {};             //没有任何属性的对象
var point = {x:1,y:1};      //两个属性
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',
                surname: 'Flanagan'
            }
    };

console.log(empty);
console.log(point);
console.log(point2);
console.log(book);

JavaScript创建对象的三种方法

二、通过new创建对象

new运算符创建并初始化一个新对象。关键字new后跟随一个函数调用。这里的函数称做构造函数(constructor),构造函数用以初始化一个新对象。下面是一些示例

var o = new Object();   //创建一个空对象,和{}一样
var a = new Array();    //创建一个空数组,和[]一样
var d = new Date();     //创建一个表示当前时间的Date对象
var r = new RegExp('js');   //创建一个可以进行模式匹配的RegExp对象

三、使用Object.create()方法

Object.create()是一个静态函数,而不是提供给某个对象调用的方法。使用它的方法很简单,只须传入所需的原型对象即可:

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

可以通过传入参数null来创建一个没有原型的新对象,但通过这种方式创建的对象不会继承任何对象,甚至不包括基础方法,比如toString,也就是说,它将不能和“+”运算符一起正常工作:

var o2 = Object.create(null);   //o2不继承任何属性和方法

如果想创建一个普通的空对象(比如通过{}或new Object()创建的对象),需要传入Object.prototype。

var o2 = Object.create(Object.prototype);   //o3和{}和new Object()一样