JavaScript進階程式設計 閱讀筆記(十三) js定義類或對象

來源:互聯網
上載者:User

工廠方式

  建立並返回特定類型的對象。  

複製代碼 代碼如下:function createCar(sColor,iDoors,iMpg){
var oTempCar=new Object();
oTempCar.color=sColor;
oTempCar.doors=iDoors;
oTempCar.mpg=iMpg;
oTempCar.showColor=function(){
alert(this.color);
}
return oTempCar;
}

  調用樣本: 複製代碼 代碼如下:var oCar1=createCar("red",4,23);
var oCar2=createCar("blue",3,25);
oCar1.showColor();
oCar2.showColor();

  缺點:方法重複建立了。如在上面的調用樣本中,oCar1和oCar2均有自己的shoColor方法,但這個是可以共用的。

建構函式方式

  樣本:

複製代碼 代碼如下:function Car(sColor,iDoors,iMpg){
this.color=sColor;
this.door=iDoors;
this.mpg=iMpg;
this.showColor=function(){
alert(this.color);
}
}

  調用樣本: 複製代碼 代碼如下:var oCar1=new Car("red",4,23);
var oCar2=new Car("blue",3,25);

  缺點:跟工廠方式一樣,方法重複建立了。

原型方式

  本方式利用了對象的 prototype 屬性,可把它看成建立新對象所依賴的原型。這裡用空建構函式來設定類名,然後所有的屬性和方法都被直接賦予 prototype 屬性,重寫前面的例子,代碼如下:

複製代碼 代碼如下:function Car(){
}

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

  調用: 複製代碼 代碼如下:var oCar1=new Car();
var oCar2=new Car();

  缺點:不能通過給建構函式傳遞參數初始化屬性的值

混合的建構函式/原型方式

  聯合使用建構函式和原型方式,樣本如下:

複製代碼 代碼如下:function Car(sColor,iDoors,iMpg){
this.color=sColor;
this.door=iDoors;
this.mpg=iMpg;
}

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

  調用樣本: 複製代碼 代碼如下:var oCar1=new Car("red",4,23);
var oCar2=new Car("blue",3,25);

  優點:無記憶體浪費,建立方便。

  這種方式是ECMAScript採用的主要方式。

動態原型方法

  使用混合的建構函式/原型方式把對象的方法放在了對象外面定義,讓人感覺不是那麼物件導向,沒有在視覺上進行很好的封裝,因此產生了動態原型方法:

複製代碼 代碼如下:function Car(sColor,iDoors,iMpg){
this.color=sColor;
this.door=iDoors;
this.mpg=iMpg;
if(typeof Car._initialized=="undefined"){
Car.prototype.showColor=function(){
alert(this.color);
};
Car._initialized=true;
}
}

作者:Artwl
出處:http://artwl.cnblogs.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.