繼承的發展史
傳統形式–> 原型鏈
過多的繼承了沒用的屬性
借用建構函式
不能繼承借用建構函式的原型
每次建構函式都要多走一乙個函式(通過call來改變this的指向)
function
person
(age,name,***)
function
student
(age,name,***,grade)
var student =
newstudent(20
,'xiaozhao'
,'male',18
);console.
log(student)
;
共享原型
不能隨便改動自己的原型(son的protptype和father的prototype是一樣的原型)
father.prototype.lastname =
'deng'
;function
father()
var father =
newfather()
;function
son(
)function
inherit
(target,origin)
inherit
(son,father)
;var son =
newson()
; console.
log(son.lastname)
;
注意事項:繼承必須在new之前,否則的話木已成舟。
4. 聖杯模式
father.prototype.lastname =
'deng'
;function
father()
var father =
newfather()
;function
son(
)function
inherit
(target,origin)
f.prototype = origin.prototype;
target.prototype =
newf()
;}inherit
(son,father)
;var son =
newson()
; console.
log(son.lastname)
;
標準的聖杯模式
//聖杯模式
function
inherit
(target, origin);f
. prototype =
0rigin. prototype;
target. prototype =
newf()
; target. prototype. constuctor = target;
target. prototype. uber =
0rigin. prototype ;
}
功能:管理變數,防治汙染全域性,實現模組化開發。 day9 繼承模式 命名空間 物件列舉
傳統形式 原型鏈 過多的繼承了沒用的屬性 借用建構函式 不能繼承借用建構函式的原型 每次建構函式都要多走乙個函式 function person name,age,function student name,age,grade var student newstudent 共享原型 不能隨便改動自己...
命名空間 物件列舉
在實際專案開發中,往往乙個頁面由多人共同開發,這個時候就存在乙個問題,一旦命名的變數相同,將會導致衝突,如下 張三定義的內容 var num 123 李四定義的內容 var num 我是乙個字串 這個張三在後面呼叫num時就會發生錯誤,為了避免該情況的產生,我們一般使用立即執行函式 閉包的功能進行開...
物件,類,命名空間,繼承
就是把過程和資料包圍起來,對資料的訪問只能通過已定義的介面 也就會牽涉到下面要談到的介面的概念 比如相思鳥和烏鴉,我們在抽象時,我們忽略它們嘴的不一樣,而我們只在意它們都是有嘴的 mouth 我們忽略它們羽毛顏色的不一樣,而只在意它們的羽毛是有顏色的 color 然後我們抽象出嘴 羽毛顏色等特點。然...