我们已经了解了如何定义构造器函数,并用来新建(构造)对象。这种做法的主要意图是通过new操作符来调用函数,以达到访问对象this指的目的,然后,构造器就可以将其所创建的对象返回给我们。这样我们就有了一种赋予新建对象一定功能(即为其添加属性和方法)的方法。
下面,让我们通过一个具体的构造器函数Gadget(),来看看它是如何在新建对象时添加属性和方法的
function Gadget(name,color){
this.name = name;
this.color = color;
this.whatAreYou = function(){
return 'I am a' + this.color + '' + this.name;
}
}
添加属性和方法还有另一种方式,即通过构造器函数的prototype属性来增加该构造器所能提供的功能。现在就让我们来为上面的构造器增加两个属性(即price和rating)和另一个方法(即getInfo())。由于prototype属性包含的是一个对象,所以我们可以这样:
Gadget.prototype.price = 100;
Gadget.prototype.rating = 3;
Gadget.prototype.getInfo = function(){
return 'Rating: ' + this.rating + ', price: ' + this.price;
};
如果不想将他们逐一添加到原型对象中去,也可以另外定义一个对象,然后将其覆盖到之前的原型上:
Gadget.prototype = {
price:100,
rating:3,
getInfo:function(){
return 'Rating: ' + this.rating + ', price: ' + this.price;
}
};