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 "
" );
//mike1,john,bill
ocar1.showcolor(); //red
document.write(ocar2.objs "
" );
//a,b ocar1:a,b,c
document.write( "
" ocar2.value); //1
document.write( "
" ocar2.drivers); //mike1,john
posted on 2012-08-03 16:50
紫蝶∏飛揚↗ 阅读(909)
评论(0) 编辑 收藏 所属分类:
div css js代码