首页 > Web开发 > 详细

Javascript 定义类或对象

时间:2014-03-10 03:21:42      阅读:430      评论:0      收藏:0      [点我收藏+]

1、工厂方式

 function createCar(){

  var oTempCar=new Object;

  oTempCar.color="Red";

  oTempCar.doors=4;

  oTempCar.showColor=function(){ alert(this.color);};

  return oTempCar;

 }

var oCar1=createCar();

缺点:1)语义上不像使用带有构造函数的new运算符那么正规;

     2)每次调用createCar(),都要创建新函数showColor(),每个对象都有自己的showColor()版本;

2、构造函数方式

function Car(sColor,iDoors){

  this.color=sColor;

  this.doors=iDoors;

  this.showColor=function(){alert(this.color;)};

}

var oCar1=new Car("Red",4);

缺点:1)重复生产函数,每个对象都创建独立的函数版本;

3、原型方式

function Car(){}

Car.prototype.color="Red";

Car.prototype.doors=4;

Car.prototype.drivers=new Array("Mike","Sue");

Car.prototype.showColor=function(){alert(this.color);};

var oCar1=new Car();

缺点:1)属性drivers是指向Array对象的指针,Car的每个实例都指向同一个数组;

优点:1)可以使用instanceof运算符检查给定变量指向的对象的类型,alert(oCar1 instanceOf Car);  //"true"

4、混合的构造函数/原型方式

function Car(sColor,iDoors){

  this.color=sColor;

  this.doors=iDoors;

  this.drivers=new Array("Mike","Sue");

}

Car.prototype.showColor=function(){alert(this.color);};

var oCar1=new Car("Red",4);

5、动态原型方法

function Car(sColor,iDoors){

  this.color=sColor;

  this.doors=iDoors;

  this.drivers=new Array("Mike","Sue");

  

  if(typeof Car._initialized=="undefined"){

    Car.prototype.showColor=function(){alert(this.color);};

    Car._initialized=true;

  }

}

优点:1)语义上更新Java其他语言中的类定义;

 

-- 摘抄于《 JavaScript 高级程序设计》 --

Javascript 定义类或对象,布布扣,bubuko.com

Javascript 定义类或对象

原文:http://www.cnblogs.com/null2/p/3590674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!