亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS中寄生組合式繼承中為什么要使用原型式繼承的方法繼承父類的原型呢?

JS中寄生組合式繼承中為什么要使用原型式繼承的方法繼承父類的原型呢?

翻閱古今 2019-05-14 09:42:22
本人剛開始學習js,在《js高程》上看到了寄生組合式繼承這一節,但是對書上給出的代碼不太明白。我理解的是:寄生組合式繼承是為了避免組合繼承中實例屬性和原型對象中屬性重復的問題,它使用借用構造函數的方法繼承父類構造函數中的屬性,使用原型式繼承的方法繼承父類的原型對象。這是書上的代碼:functioninheritPrototype(SubType,SuperType){varpro=Object.create(SuperType.prototype);pro.constructor=SubType;SubType.prototype=pro;}但是,它和下面的函數有什么區別呢?functioninheritPrototype(SubType,SuperType){SubType.prototype=SuperType.prototype;SubType.prototype.constructor=SubType;}不太明白為什么要使用原型式繼承的方法繼承父類的原型,原型式繼承不就是一個淺復制嗎?這和直接賦值有什么區別呢?
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

上面的代碼,如果你在SubType的原型上增加方法,比如:
SubType.prototype.fn=function(){...}
這樣不會影響到SuperType.prototype。
下面的代碼就會。
                            
查看完整回答
反對 回復 2019-05-14
?
達令說

TA貢獻1821條經驗 獲得超6個贊

你說的是修改構造函數繼承+原型對象繼承的方法吧二者如果單獨使用的話都會有缺點,比如你單獨使用原型對象繼承那么缺點就是沒辦法傳參我們知道修改構造函數繼承是通過改變this指向完成繼承但,你再比如單獨使用修改構造函數繼承那么原型對象上的方法就沒辦法取到了所以組合繼承是取其精華,去其糟粕的方法
                            
查看完整回答
反對 回復 2019-05-14
  • 2 回答
  • 0 關注
  • 761 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號