首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS种的创建

2012-07-26 
JS类的创建1、工厂方式:创建能创建并返回特定类型的工厂函数creator:  如:function createCar(sColor,iDoor

JS类的创建
1、工厂方式:创建能创建并返回特定类型的工厂函数creator:
  如:

function createCar(sColor,iDoors,iMpg){    var oTempCar = new Object();    oTmepCar.color = sColor;    oTmepCar.doors= iDoors;    oTmepCar.mpg= iMpg;    oTmepCar.showColor = funtion (){        alert (this.color);    };    return oTempCar;}var oCar1 = createCar('red',4,23);var oCar1 = createCar('blue',3,25);oCar1.showColor();oCar2.showColor();


2、构造函数方式:创建一个构造函数(构造函数的首字母大写)
  如:
function Car(sColor,iDoors,iMpg){    this.color = sColor;    this.doors= iDoors;    this.mpg= iMpg;    this.showColor = function (){        alert(this.color);    }}var oCar1 = new Car('red',3,25);var oCar2 = new Car('blue',5,25);


注:以上两种方式在创建对象时,对于可以共享的showColor()方法均进行了创建,也即有多少个对象便创建了多少个方法;

3、原型方式:该方式利用了对象的prototype属性,可以把它看成是创建新对象所依赖的原型。这种可以削除了上述不足,但是它只能在对象创建完成之后才能更改对象的属性,并且由于所创建的对象中的属性对于对象的引用,使得改变其中一个由对象创建的属性,其它的由此方法创建的对象的属性也会发生改变。如下例中的drivers,是Array对象的引用,所以当oCar1的drivers改变时,oCar2的drivers也会发生改变;
如:
function Car(){}Car.prototype.color = 'red';Car.prototype.doors = '4';Car.prototype.mpg = '25';Car.prototype.drivers = new Array('a','b');Car.prototype.showColor = function (){    alert(this.color);};var oCar1 = new Car();var oCar2 = new Car();


4、混合的构造函数/原型方式:该方法结合了构造函数和原型方式的优点;
  如:
function Car(sColor,iDoors,iMpg){    this.color = sColor;    this.doors = iDoors;    this.mpg = iMpg;    this.drivers = new Array('a','b');}Car.prototype.showColor = function (){    alert(this.color);}var oCar1 = new Car('red',3,25);var oCar2 = new Car('blue',5,25);


5、动态原型方法(推荐方法):该方法通过检测对象否已经被创建决定是否创建相应函数。
如:
function Car(sColor,iDoors,iMpg){    this.color = sColor;    this.doors = iDoors;    this.mpg = iMpg;    this.drivers = new Array('a','b');    if(typeof Car._initialized == "undefined"){        Car.prototype.showColor = function (){            alert(this.color);        }        Car._initialized = true;    }}

热点排行
Bad Request.