物件導向三大特徵:封裝、繼承、多型
封裝:將**封裝到函式中,不允許外部訪問內部成員的屬性和方法,對外提供唯一的訪問介面。
繼承:通過物件繼承另乙個物件的屬性和方法,並進行擴充套件開發和維護。繼承擁有單根性和傳遞性。
多型:乙個介面方式,根據引數的不同實現不同的狀態(前端沒有多型,只有偽多型)。
封裝的優勢:
1.使用者只需要關注實現即可,不需要關注內部原理。
2.降低了程式之間的依賴性,低耦合。
3.隱藏內部細節,不對外公開,一定程度保證了安全性。
es5中通過提供get/set對資料的取賦值進行了操作
封裝的最好體現就是ajax和jquery
繼承的優勢:
1.節省**
2.便於開發維護
3.方便擴充套件重寫**結構
單根性:乙個類只能繼承另乙個類的屬性和方法,繼承不能實現多繼承,避免**的複雜性(乙個兒子只能有乙個爹).
傳遞性:類的繼承是可以傳遞下去的,也就是說類a繼承類b , 類c繼承類a ,那麼c同樣會繼承b的方法和屬性。
五大基本原則
1.單一職能原則 srp
這個非常好理解了,就是說乙個類應該只有乙個發生變化的原因。
以上面student為例子,我們可以讓他擁有學習和教授別人兩種功能,但是最明顯的問題,如果把教授別人的時間多了,那麼自己學習的時間就少了,勢必影響個人學習,所以盡量將學生和老師的職責分離開來。(例子而已,不要太糾結)這樣的話就能更好的組織**結構。
2.開放封閉原則
程式對外擴充套件是開放的,但是對內修改是封閉的
簡單來說就是乙個物件一旦被定義,那麼已經定義好的部分是不允許修改的,但是可以擴充套件額外的**結構
3.黎克特制替換原則ocp
主張使用抽象和多型將設計中的靜態結構改為動態結構,維持設計的封閉性。
任何基類出現的地方,子類也可以出現。簡單來說就是子類可以替代父類進行傳參或操作
4.依賴倒置原則
高層模組定義介面,低層模組進行實現,轉換了依賴關係。
1.高層模組不應該依賴於低層模組,兩者應該依賴於抽象物件
2.抽象不應該依賴於細節,細節應該依賴於抽象
控制反轉(ioc):將物件建立的控制權轉移,通過配置檔案或其他形式進行建立。
依賴注入(di):ioc容器在執行期間,動態的將某種依賴關係注入到物件之中。
5.介面分離原則
客戶類不應該唄強迫依賴那些不需要的介面
乙個類依賴於另乙個類應該建立在最小的介面上
Javascript物件導向程式設計(三)
日期 2010年5月24日 這個系列的第一部分介紹了 封裝 第二部分介紹了使用建構函式實現 繼承 今天是最後乙個部分,介紹不使用建構函式實現 繼承 一 什麼是 非建構函式 的繼承?比如,現在有乙個物件,叫做 中國人 var chinese 還有乙個物件,叫做 醫生 var doctor 請問怎樣才能...
Javascript 物件導向程式設計 三
方法和屬性從乙個類傳遞到另乙個類的過程 funtion person firstname,lastname person.prototype.sayhi function function student firstname,lastname student.prototype.sayhi func...
Javascript 物件導向程式設計 三
方法和屬性從乙個類傳遞到另乙個類的過程 funtion person firstname,lastname person.prototype.sayhi function function student firstname,lastname student.prototype.sayhi func...