推荐的创建对象方式####
方法一:混合的构造函数/原型方式
function Car(sColor,iDoors,iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","John");
}
Car.prototype.showColor = function() {
alert(this.color);
};
var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);
方法二:动态原型方法
function Car(sColor,iDoors,iMpg) {
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = new Array("Mike","John");
if (typeof Car._initialized == "undefined") {
Car.prototype.showColor = function() {
alert(this.color);
};
Car._initialized = true;
}
};
这两种方式都解决了经典方式中成员方法会生成多份的问题或者新建对象的属性成员指向同一个引用对象的问题。而问题的根因在于function和object是引用类型,作为属性的object需要创建多份,而方法为节省空间在内存中应该只有一份。(说句实话--这段话还没看懂);
网友评论