JS 创建类---混合的构造函数/原型方式
prototype:原型.此对象的所有实例共享原型定义的数据和(对象)引用.一般用于防止重复创建函数,浪费内存.
原型中定义的所有函数和引用的对象都只创建一次;构造函数中的方法则会随着实例的创建重复创建(如果有对象或方法的话).
不管在原型中还是构造函数中,属性(值)都不共享.
创建类的最好方式是用构造函数定义属性,用原型定义方法。
这种方式同样适用于继承机制,用对象冒充继承构造函数的属性,用原型链继承 prototype 对象的方法。
//构造函数
function Car(sColor,iDoors,iMpg) {
this.color = sColor; //定义属性
this.doors = iDoors; //定义属性
this.mpg = iMpg; //定义属性
this.drivers = new Array("Mike","John");//定义数组对象.每个实例创建一个单独的对象
}
//公共方法(共享),属性不共享.
Car.prototype={
value:1, //属性不共享
objs:new Array("A","B"), //对象共享引用
showColor : function() { //方法共享引用.
alert(this.color);
}
};
var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);
oCar1.drivers.push("Bill"); //构造方法中的对象都是各个独立的.
oCar1.value=2; //属性不共享.
oCar1.objs.push('C'); //原型中的对象都是共享引用的.
document.write(oCar1.drivers + "<br/>" );
//Mike1,John,Bill
oCar1.showColor(); //red
document.write(oCar2.objs + "<br/>" );
//A,B oCar1:A,B,C
document.write( "<br/>" +oCar2.value); //1
document.write( "<br/>" +oCar2.drivers); //Mike1,John
posted on 2012-08-03 16:50
紫蝶∏飛揚↗ 阅读(965)
评论(0) 编辑 收藏 所属分类:
div+css+js代码