JS的六種繼承方法
阿新 • • 發佈:2022-05-12
繼承:想要繼承就必須有父類(繼承誰,提供繼承的屬性)
一、原型鏈繼承
缺點:1、新例項無法向父類建構函式傳參。
2、繼承單一。
3、所有新例項都會共享父類例項的屬性。(原型上的屬性是共享的,一個例項修改了原型屬性,另一個例項的原型屬性也會被修改!)
二、借用建構函式繼承
特點:1、只繼承了父類建構函式的屬性,沒有繼承父類原型的屬性。
2、解決了原型鏈繼承缺點1、2、3。
3、可以繼承多個建構函式屬性(call多個)。
4、在子例項中可向父例項傳參。
缺點:1、只能繼承父類建構函式的屬性。
2、無法實現建構函式的複用。(每次用每次都要重新呼叫)
3、每個新例項都有父類建構函式的副本,臃腫。
三.組合繼承(組合原型鏈繼承和借用建構函式繼承)
缺點:呼叫了兩次父類建構函式(耗記憶體),子類的建構函式會代替原型上的那個父類建構函式。
四.原型式繼承
特點:類似於複製一個物件,用函式來包裝。
五.寄生式繼承
優點:沒有建立自定義型別,因為只是套了個殼子返回物件(這個),這個函式順理成章就成了建立的新物件。
六.寄生組合式繼承
寄生:在函式內返回物件然後呼叫組合:1、函式的原型等於另一個例項。 2 、在函式中用apply或者call引入另一個建構函式,可傳參