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


































