js的幾種繼承方式

2021-10-16 02:00:36 字數 1212 閱讀 2436

首先先來講下,其實在js中並不存在類,class只是語法糖,本質還是函式

class person {}

person instanceof function // true

function parent(value) 

parent.prototype.getvalue = function()

function child(value)

child.prototype = new parent()

const child = new child(1)

child.getvalue() //1

child instanceof parent //true

以上繼承方式的核心是在子類的建構函式中通過parent.call(this) 繼承父類的屬性,然後改變子類的原型為new parent()來繼承父類的函式。

這種繼承方式的優點在於建構函式可以傳參,不會與父類引用屬性共享,可以復用父類的函式,但是也存在乙個缺點就是在繼承父類函式的時候呼叫了父類建構函式,導致子類的原型多了不需要的父類屬性,存在記憶體上的浪費

這種繼承方式對組合繼承進行了優化,組合繼承缺點在於繼承父類函式是呼叫了建構函式,我們只需要優化掉這點就行了

function parent(value) 

parent.prototype.getvalue = function()

function child(value)

child.prototype = object.create(parent.prototype,

})const child = new child(1)

child.getvalue() // 1

child instanceof parent //true

class parent 

getvalue()

}class child extends parent

}let child = new child(1)

child.getvalue() // 1

child instanceof parent // true

class實現繼承的核心在於使用extends表明繼承哪個父類,並且在子類建構函式中必須呼叫super,因此這段**可以看成parent.call(this, value)

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