JS创建对象的方式

一、创建对象的方式:
1、工厂方式:
function createCar(colors,doors){
var tempCar = new object();
tempCar.colors = colors;
tempCar.doors = doors;
tempCar.showColor = function showColor(){
alert(this.color);

};
}

缺点:不像常用的面向对象声明的方式;每声明一个Car实例,就要创建多一个showColor函数,不能复用,浪费内存。

2、构造函数的方式。
function Car(colors,doors){
this.colors = colors;
this.doors = doors;
this.showColor = function showColor(){
alert(this.color);

}

优点:以更面向对象的方式
缺点:每声明一个Car实例,就要创建多一个showColor函数,不能复用,浪费内存。

3、prototype原形的方式:
//首先定义构造函数
function Car(){
}
Car.prototype.colors = "red";
Car.prototype.doors = 4;
Car.prototype.showColor = function(){
alert(this.colors);

};
//以上面的定义原形创建Car
var car1 = new Car();
var car2 = new Car();

优点:重用代码,car1.showColor,car2.showColor指向的是同一个函数位置。
缺点:构造函数没有参数,不能在调用构造函数时,自定义自己的Car。
注:这个缺点可以这样解决:var car1 = new Car();声明后,再指定它自己的字段和方法:car1.doors = 6;
甚至也可以改变方法指针指向另一个方法:car1.showColor = changeColor;

----------------------------------------------
综合解决以上问题的方法:
4、联合使用构造函数和原形方式:
function Car(colors,doors){
this.colors = colors;
this.doors = doors;
}
Car.prototype.showColor = function showColor(){
alert(this.color);
};

var car1 = new Car("red",4);
var car2 = new Car("blue",6);

优点:这样一来便很好地解决了上面的问题,在调用构造函数时,自定义自己的Car;也解决了方法复用的问题。

posted on 2012-02-21 11:12  batigol  阅读(145)  评论(0)    收藏  举报

导航