JavaScript筆記四:物件導向的程式設計
1、理解對象
屬性類型:資料類型和訪問器類型
資料屬性:[[Configurable]]:能否通過delete刪除屬性從而重定義屬性或者能否修改屬性的特性,能否把屬性修改為訪問器屬性
[[Enumerable]]:能否通過for-in 迴圈返回屬性
[[Writable]]:能否修改屬性的值
[[Value]]:包含這個屬性的資料值
訪問器屬性:[[Configurable]]:能否通過delete刪除屬性從而重定義屬性或者能否修改屬性的特性,能否把屬性修改為資料屬性
[[Enumerable]]:能否通過for-in 迴圈返回屬性
[[Get]]:在讀取屬性時調用的函數
[[Set]]:在寫入屬性時調用的函數
2、建立對象
原廠模式:抽象具體對象的過程。用函數來封裝以特定介面建立對象的細節(解決了多次建立對象的問題,但是沒有解決對象識別的問題)
建構函式模式:建構函式以大寫字母開頭它沒有顯式的建立對象,直接將屬性和方法賦給了this對象,沒有ruturn對象。將來可以將它的執行個體標識為一種特定的類型,正是建構函式模式勝過原廠模式的地方。
原型模式:建立的函數都有一個原型屬性,這個屬性是一個指標,指向一個對象,而這個對象包含可以由特定類型的所有執行個體共用的屬性和方法。使用原型對象的好處是可以讓所有的對象執行個體共用它所包含的屬性和方法。
組合使用建構函式模式和原型模式:構造模式用於定義執行個體屬性,而原型模式用於定義方法和共用的屬性。
動態原型模式:把所有的資訊都封裝在建構函式中,而通過在建構函式中初始化模型,又保持了同時使用建構函式和原型的優點
寄生建構函式模式:建立一個函數,該函數的作用是封裝對象的代碼,然後再返回建立的對象。
穩妥建構函式模式:遵循與寄生建構函式類似的模式,但是它新建立對象的執行個體方法不引用this而且不使用new 操作符調用建構函式。
3、繼承
原生鏈:利用原型讓一個參考型別繼承另一個參考型別的屬性和方法。每個建構函式都有一個原型對象,原型對象都包含一個指向建構函式的指標,而執行個體都包含一個指向原型的內部指標。
繼承通過建立SuperType的執行個體,並將該執行個體賦給SubType.prototype實現的。
組合繼承:將原型鏈和借用建構函式的技術組合到一塊。既通過在原型上定義方法實現了函數複用又能保證每個執行個體都有它自己的屬性。
原型式繼承:可以在不必預先定義建構函式的情況下實現繼承,其本質是執行對給定對象的淺複製。
寄生式繼承:與原型式繼承非常相似,也是基於某個對象或某些資訊建立一個對象,然後增強對象,最後返回對象。
寄生組合式繼承:集寄生式繼承和組合繼承的優點於一身,是實現基於類型繼承的最有效力的方式。
上一篇
http://www.bkjia.com/kf/201412/359005.html