JavaScript學習之一:採用哪種方式定義類或對象?

來源:互聯網
上載者:User

 JavaScript中定義類或對象有多種方法:

以建立Car為執行個體說明。

var oCar = new Object;
oCar.color ="red";
oCar.doors = 4;
oCar.mpg=23;
oCar.showColor = function()
{
     alert(this.color);
}

  • 工廠方式構造,例如:

    function createCar(sColor,iDoors,iMpg)
    {
     var oTempCar = new Object;
     oTempCar.color = sColor;
     oTempCar.doors=iDoors;
     oTempCar.mpg=iMpg;
     oTempCar.showColor = function()
     {
      al(this.color)
     }
     return oTempCar;
    }

弊端:每個對象都有自己的一個showColor函數。

  • 建構函式方式:

function Car(sColor,iDoors,iMpg)
{
 this.color= sColor;
 this.doors = i;
 this.mpg = iMpg;
 this.showColor = function()
 {
  alert(this.color)
 };
}

弊端:建構函式重複產生函數,可以用外部函數重寫建構函式(不太懂);

  • 原型方式:該方式利用了prototype屬性。

function Car()
{
 
}
Car.prototype.color = "red";
Car.prototype.doors =4;
Car.prototype.mpg = 23;
Car.prototype.drivers = new Array("Mike","Sue");
Car.prototype.showColor = function()
{
 alert(this.color);
}

弊端:給一個執行個體添加drivers,另一個執行個體也添加了。

  • 混合的建構函式、原型方式

function Car()
{
 
}
Car.prototype.color = "red";
Car.prototype.doors =4;
Car.prototype.mpg = 23;
Car.prototype.drivers = new Array("Mike","Sue");
Car.prototype.showColor = function()
{
 alert(this.color);
}
解決了兩種弊端。

  • 動態原型構造

function Car(sColor,iDoors,iMpg)
{
 this.color = sColor;
 this.doors = iDoors;
 this.mpg = iMpg;
 this.drivers = new Array("Mike","Sue");
 
 if(typeof Car._initialized == "undefined")
 {
  Car.prototype.showColor = function()
  {
   alert(this.color)
  }
  car._initialized = true;
 }
}

  • 混合工廠方式。

function Car()
{
 var oTempCar = new Object;
 oTempCar.color="red";
 oTempCar.doors = 4;
 oTempCar.mpg = 23;
 oTempCar.showColor = function()
 {
  ale(this.color)
 }
 return oTempCar;
}

採用哪種方式:

目前流行的是建構函式、原型方式,此外動態原型方式較為流行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.