JS繼承的6種繼承

想要繼承就必須提供一個(gè)父類

1.原型鏈繼承

重點(diǎn):讓新實(shí)例的原型等于父類的實(shí)例。

    特點(diǎn):1、實(shí)例可繼承的屬性有:實(shí)例的構(gòu)造函數(shù)的屬性,父類構(gòu)造函數(shù)屬性,父類原型的屬性。(新實(shí)例不會(huì)繼承父類實(shí)例的屬性?。?/p>

    缺點(diǎn):1、新實(shí)例無法向父類構(gòu)造函數(shù)傳參。

       2、繼承單一。

       3、所有新實(shí)例都會(huì)共享父類實(shí)例的屬性。(原型上的屬性是共享的,一個(gè)實(shí)例修改了原型屬性,另一個(gè)實(shí)例的原型屬性也會(huì)被修改?。?/p>

2.借用構(gòu)造函數(shù)繼承

重點(diǎn):用.call()和.apply()將父類構(gòu)造函數(shù)引入子類函數(shù)(在子類函數(shù)中做了父類函數(shù)的自執(zhí)行(復(fù)制))

    特點(diǎn):1、只繼承了父類構(gòu)造函數(shù)的屬性,沒有繼承父類原型的屬性。

       2、解決了原型鏈繼承缺點(diǎn)1、2、3。

       3、可以繼承多個(gè)構(gòu)造函數(shù)屬性(call多個(gè))。

       4、在子實(shí)例中可向父實(shí)例傳參。

    缺點(diǎn):1、只能繼承父類構(gòu)造函數(shù)的屬性。

       2、無法實(shí)現(xiàn)構(gòu)造函數(shù)的復(fù)用。(每次用每次都要重新調(diào)用)

       3、每個(gè)新實(shí)例都有父類構(gòu)造函數(shù)的副本,臃腫。

3.組合繼承(組合原型鏈繼承和借用構(gòu)造函數(shù)繼承)(常用)

重點(diǎn):結(jié)合了兩種模式的優(yōu)點(diǎn),傳參和復(fù)用

    特點(diǎn):1、可以繼承父類原型上的屬性,可以傳參,可復(fù)用。

       2、每個(gè)新實(shí)例引入的構(gòu)造函數(shù)屬性是私有的。

    缺點(diǎn):調(diào)用了兩次父類構(gòu)造函數(shù)(耗內(nèi)存),子類的構(gòu)造函數(shù)會(huì)代替原型上的那個(gè)父類構(gòu)造函數(shù)。

4.原型式繼承

重點(diǎn):用一個(gè)函數(shù)包裝一個(gè)對(duì)象,然后返回這個(gè)函數(shù)的調(diào)用,這個(gè)函數(shù)就變成了個(gè)可以隨意增添屬性的實(shí)例或?qū)ο?。object.create()就是這個(gè)原理。

    特點(diǎn):類似于復(fù)制一個(gè)對(duì)象,用函數(shù)來包裝。

    缺點(diǎn):1、所有實(shí)例都會(huì)繼承原型上的屬性。

       2、無法實(shí)現(xiàn)復(fù)用。(新實(shí)例屬性都是后面添加的)

5.寄生式繼承

重點(diǎn):就是給原型式繼承外面套了個(gè)殼子。

    優(yōu)點(diǎn):沒有創(chuàng)建自定義類型,因?yàn)橹皇翘琢藗€(gè)殼子返回對(duì)象(這個(gè)),這個(gè)函數(shù)順理成章就成了創(chuàng)建的新對(duì)象。

    缺點(diǎn):沒用到原型,無法復(fù)用。

6.寄生組合式繼承(常用)

寄生:在函數(shù)內(nèi)返回對(duì)象然后調(diào)用

    組合:1、函數(shù)的原型等于另一個(gè)實(shí)例。2、在函數(shù)中用apply或者call引入另一個(gè)構(gòu)造函數(shù),可傳參

??? 重點(diǎn):修復(fù)了組合繼承的問題


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容