javascript必知必會:面象對象編程
面象對象編程技術的核心理念:封裝、繼承、多態;在一些主流的高級編程語言中,比 如:C#,VB.NET,JAVA,PHP等都是很容易實現的,而如果要在javascript中實現面象對象編程,可就不那么直接和容易了,因為 javascript并不是面向對象的語言,所以我們只能通過javascript的一些特性,比如:閉包、原型鏈等來模擬出面向對象編程,我認為這些是 作為熟練掌握與靈活運用javascript的基礎,園子里已有很多的javascript高手對于這方面都有介紹與分析,而我僅以作為一個項目負責人 (獨立設計與開發WEB前端與后端)的視角來重新理解javascript面向對象要點。
既然是面向對象,首先我們要知道如何創建一個對象,以下列出了創建對象的幾種常見方法:
A.直接創建一個對象實例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
優點:直接創建一個對象,無需提前定義類型;
缺點:無法實現復用;
B.先定義后實例化對象:
1 2 3 4 5 6 7 8 9 10 |
|
優點:類似面向對象編程語言的構造函數,容易理解,且定義后可通過new關鍵字實例化多個對象,實現復用。
缺點:需先定義后才能實例化;
綜上所述,建議采用B方法來創建對象。
實現封裝,即只暴露公共方法與公共屬性,隱藏實現細節(私有方法、屬性)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
利用原型鏈實現繼承,即一個對象包含另一個對象的所有公共屬性與方法,實現繼承的方法有很多,我覺得采用如下形式來模擬繼承更符合面向對象的思維:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
利用原型鏈實現多態,即基于同一個方法簽名在不同的子類中表現的形式不同:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|