随笔-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 + "<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 紫蝶∏飛揚↗ 阅读(944) 评论(0)  编辑  收藏 所属分类: div+css+js代码

只有注册用户登录后才能发表评论。


网站导航: