js繼承常見的幾種方式

2021-10-09 12:33:27 字數 2766 閱讀 6715

function

parent

(***)

parent.prototype.

get***

=function()

function

son(name)

son.prototype =

newparent()

var son1 =

newson

('奧特曼'

關鍵:把子類的原型指向父類的例項,從而繼承父類的私有屬性和原型屬性

優點:父類新增的原型屬性和方法,子類例項都能訪問的到,簡單易用

缺點:1無法實現多繼承

2.建立子類例項的時候沒辦法向父類建構函式傳參

3.所有子類共享父類的屬性,(比如某個屬性是乙個陣列,乙個子類對其進行了修改,導致其他子類訪問的也發生改變)

function

parent

(***)

parent.prototype.

get***

=function()

function

son(***, name)

var son =

newson

('men'

,'洛克王國'

) console.

log(son)

var son =

newson

('men'

,'洛克王國'

)var son1 =

newson

('women'

,'怪獸'

) console.

log(son, son1)

![在這裡插入描述]

('奧特曼'

關鍵:通過父類的建構函式,繼承父類的屬性並保留傳參的功能,通過object.create(parent.prototype)來建立繼承了父類原型的物件,並把這個物件賦給子類的原型,這樣既保證了父類建構函式不會執行兩次,也繼承了父類的原型屬性

優點:1.建立子類時可以向父類傳參

2.可以實現多繼承

3.解決了原型鏈繼承中子類例項共享父類例項的引用資料型別屬性的問題(即使父類中有引用資料型別,在建立子類例項時,都會重新呼叫父類的建構函式重新建立乙個引用資料型別的屬性,並且從新申請位址空間)

4.父類建構函式只執行一次

('奧特曼'

,'men',15

) console.

log(b)

b.show***

()

關鍵:使用extends關鍵字實現繼承父類的原型屬性,呼叫super來繼承父類的例項屬性,其保留傳參 的優點

優點:簡單易用,不用自己來修改原型鏈來完成

將其轉換成es5 **如下

var parent =

(function()

parent.prototype.

show***

=function()

return parent

})()var son =

(function

(_super)

son.prototype.

show***

=function()

return son;})

(parent)

var son =

newson

('奧特曼',12

,'women'

) console.

log(son)

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...

js的幾種繼承方式

方式一 原型鏈繼承 function parent parent.prototype.getparentname function 子類 function child 下面這步實現繼承,這步需要放在getchildname 之前,不然獲得子類方法無法使用 child.prototype new pa...