在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ JS中寄生組合式繼承中為什么要使用原型式繼承的方法繼承父類的原型呢?

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

本人剛開始學習js,在《js高程》上看到了寄生組合式繼承這一節(jié),但是對書上給出的代碼不太明白。
我理解的是:寄生組合式繼承是為了避免組合繼承中實例屬性和原型對象中屬性重復的問題,它使用借用構造函數的方法繼承父類構造函數中的屬性,使用原型式繼承的方法繼承父類的原型對象。
這是書上的代碼:

function inheritPrototype(SubType,SuperType){
    var pro = Object.create(SuperType.prototype);
    pro .constructor = SubType;
    SubType.prototype = pro ;
    }

但是,它和下面的函數有什么區(qū)別呢?

function inheritPrototype(SubType,SuperType){
    SubType.prototype = SuperType.prototype;
    SubType.prototype.constructor = SubType;
    }

不太明白為什么要使用原型式繼承的方法繼承父類的原型,原型式繼承不就是一個淺復制嗎?這和直接賦值有什么區(qū)別呢?

回答
編輯回答
墨小羽

上面的代碼,如果你在SubType的原型上增加方法, 比如:

SubType.prototype.fn = function(){...}

這樣不會影響到 SuperType.prototype。

下面的代碼就會。

2017年9月30日 08:19
編輯回答
卟乖

你說的是修改構造函數繼承+原型對象繼承的方法吧 二者如果單獨使用的話都會有缺點,比如你單獨使用原型對象繼承那么缺點就是沒辦法傳參 我們知道修改構造函數繼承是通過改變this指向完成繼承但 , 你再比如單獨使用修改構造函數繼承那么原型對象上的方法就沒辦法取到了 所以組合繼承是取其精華,去其糟粕的方法

2018年4月28日 03:09