借鑑
1 原型鏈繼承
2 建構函式繼承(物件冒充繼承)
3 組合繼承(原型鏈繼承+建構函式繼承)
4 原型式繼承
5 寄生組合式繼承
一。原型鏈繼承
// an highlighted block
unction show()
function
run(
)run.prototype=
newshow()
;var show=
newrun()
;alert
(show.name)
//結果:run
二。建構函式繼承(物件冒充繼承)
為了解決引用共享和超型別無法傳參的問題,我們採用一種叫借用建構函式的技術,或
者成為物件冒充(偽造物件、經典繼承)的技術來解決這兩種問題
// an highlighted block
function
box(age)
function
desk
(age)
var desk =
newdesk
(200);
alert
(desk.age)
;//200
alert
(desk.name)
;//['lee','jack','hello']
desk.name.
push
('aaa');
//新增的新資料,只給 desk
alert
(desk.name)
//['lee','jack','hello','aaa']
三。組合繼承(原型鏈繼承+建構函式繼承)
借用建構函式雖然解決了剛才兩種問題, 但沒有原型, 復用則無從談起。 所以, 我們需
要原型鏈+借用建構函式的模式,這種模式成為組合繼承。
// an highlighted block
function
box(age)
box.prototype.
run=
function()
;function
desk
(age)
desk.prototype =
newbox()
;//原型鏈繼承
var desk =
newdesk
(100);
alert
(desk.
run())
;
四。原型式繼承
這種繼承借助原型並基於已有的物件建立新物件,
同時還不必因此建立自定義型別
// an highlighted block
function
obj(o)
//建立乙個建構函式
f.prototype = o;
//把字面量函式賦值給建構函式的原型
return
newf()
;//最終返回出例項化的建構函式
}var box =
;var box1 =
obj(box)
;//傳遞
alert
(box1.name)
;box1.name =
'jack'
;alert
(box1.name)
;alert
(box1.arr)
;box1.arr.
push
('父母');
alert
(box1.arr)
;var box2 =
obj(box)
;//傳遞
alert
(box2.name)
;alert
(box2.arr)
;//引用型別共享了
五。寄生組合式繼承
// an highlighted block
function
object
(o)f
.prototype = o;
return
newf()
;}function
inheritprototype
(subtype, supertype)
js原型繼承的幾種方式
1.原型鏈繼承 2,建構函式繼承 物件冒充繼承 3,組合繼承 原型鏈繼承 建構函式繼承 4,原型式繼承 5.寄生組合式繼承 一。原型鏈繼承 function show function run run.prototype new show var run new run alert run.name...
js繼承幾種方式
js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。既然要實現繼承,那麼首先我們得有乙個父類,如下 定義乙個動物類 function animal name 原型方法 animal.prototype.eat function food 核心 將父...
幾種js的繼承方式
1 繼承第一種方式 物件冒充 function super username function sub username var supernew new super super var subnew new sub sub supernew.hello subnew.hello subnew.wo...