WEB开发网
开发学院网页设计JavaScript JavaScript中的面向对象----类 阅读

JavaScript中的面向对象----类

 2010-09-14 13:24:12 来源:WEB开发网   
核心提示: 优点:看起来和更像一个类 声明实例用new运算符缺点:对象的函数会重复生成3、原型方式functionCar(){}Car.prototype.color="red";Car.prototype.doors=4;Car.prototype.mpg=23;Car.prot

优点:看起来和更像一个类 声明实例用new运算符

缺点:对象的函数会重复生成

3、原型方式

functionCar(){
}
Car.prototype.color="red";
Car.prototype.doors=4;
Car.prototype.mpg=23;
Car.prototype.showColor=function(){
  alert(this.color);
}
varoCar1=newCar();
oCar1.showColor();
alert(oCar1instanceofCar);

原理:js中的prototype

优点:避免了函数的重复创建

缺点:没有带参数的构造函数 属性如果是引用类型(比如Array),那么一个对象的属性改变,另外一个对象的同一个属性也会跟着改变

4、构造函数/原型方式

functionCar(sColor,iDoors,iMpg){
  this.color=sColor;
  this.doors=iDoors;
  this.mpg=iMpg;
}
Car.prototype.showColor=function(){
  alert(this.color);
}
varoCar1=newCar("red",4,23);
oCar1.showColor();
alert(oCar1instanceofCar);

优点:避免了函数的重复创建 并且避免了构造函数方法的引用类型属性的缺点

缺点:方法在类的外边定义的

5、动态原型方式

functionCar(sColor,iDoors,iMpg){
  this.color=sColor;
  this.doors=iDoors;
  this.mpg=iMpg;
  if(typeofCar._initialized=="undefined"){
    Car.prototype.showColor=function(){
      alert(this.color);
    }
    Car._initialized=true;
  }
}
varoCar1=newCar("red",4,23);
oCar1.showColor();
alert(oCar1instanceofCar);

Tags:JavaScript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接