JavaScript最流行的2種定義類的方式

來源:互聯網
上載者:User
其它方式:工廠方式,建構函式方式,原型方式都各有各的大缺陷,這裡就不一一介紹了,想瞭解的可以去看一下這本著作的第3章節。

1. 混合建構函式/原型方式 function  Car(sColor, iDoors, iMpg) {
   this .color  =  sColor;
   this .doors  =  iDoors;
   this .mpg  =  iMpg;
   this .drivers  =   new  Array(“Mike”, “Sue”);
}

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

var  oCar1  =   new  Car(“red”,  4 ,  23 );
var  oCar2  =   new  Car(“blue”,  3 ,  25 );

oCar1.drivers.push(“Matt”);

alert(oCar1.drivers);  // outputs “Mike,Sue,Matt”
alert(oCar2.drivers);  // outputs “Mike,Sue”

優點:具有其它方式的優點而沒有其它方式的缺點
不足:封裝性欠缺

2 . 動態原型方式 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 ;
  }
}

優點:封裝性比上一個方式更好
不足:就是看上去奇怪一點,呵呵

總之,以上2種方式是目前最廣泛使用的,盡量使用它們避免不必要的問題。

相關文章

聯繫我們

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