1. 借助建構函式實現繼承
function
parent()
function
child()
**缺點:**只能實現部分繼承。child
只能繼承parent
建構函式裡面的屬性。不能繼承parent
原型鏈上的。
2. 借助原型鏈實現繼承
function
parent()
function
child()
child.prototype =
newparent()
;
**缺點:**例項化兩個類,修改第乙個例項的屬性,會牽動第二個例項的屬性變化。原因是兩個例項的原型物件引用的是同乙個物件,都是父類的例項物件。而改變的方法在父類的例項物件上,而且是引用型別。
3. 組合方式
function
parent()
function
child()
child.prototype =
newparent()
;
解決了上面遺留下來的缺點
**缺點:**父類建構函式執行了兩次。
4. 組合繼承的優化1
function
parent()
function
child()
child.prototype = parent.prototype;
var s5 =
newchild()
;var s6 =
newchild()
;
不僅能把構造體內的函式屬性拿到,還可以把原型鏈上的屬性拿到。
**缺點:**用constructor判斷例項是哪個建構函式例項化的失效了。上面建構函式的方式也有同樣的問題。他們的constructor
都指向父類。
5. 組合繼承的優化2
function
parent()
function
child()
// 產生乙個中間物件隔離`child`的`prototype`屬性和`parent`的`prototype`屬性引用的同乙個原型。
child.prototype = object.
create
(parent.prototype)
;// 給child的原型物件重新寫乙個自己的constructor。
child.prototype.constructor = child;
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...