随笔-9  评论-168  文章-266  trackbacks-0
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代码
网站地图