六種js繼承的優缺點


js繼承

js的繼承呢我了解的有6個,分別呢有:::

1,原型連繼承

他的特點   將父類的實例作為子類的原型

特點:

  1. 非常純粹的繼承關系,實例是子類的實例,也是父類的實例
  2. 父類新增原型方法/原型屬性,子類都能訪問到
  3. 簡單,易於實現

缺點:

  1. 要想為子類新增屬性和方法,必須要在new Animal()這樣的語句之后執行,不能放到構造器中
  2. 無法實現多繼承
  3. 來自原型對象的所有屬性被所有實例共享(來自原型對象的引用屬性是所有實例共享的)(詳細請看附錄代碼: 示例1
  4. 創建子類實例時,無法向父類構造函數傳參

 

2,借用構造函數繼承

他的特點 :只繼承了父類構造函數的屬性,沒有繼承父類原型的屬性

  解決了原型鏈的缺點

可繼承多喝構造函數屬性

在子實例中可向父實例中傳參

他的缺點::只能繼承父類構造函數的屬性

無法實現構造函數的復用

每個新實例都會有父類構造函數的副本

3,組合繼承

他的特點:::可以繼承父類原型上的屬性,可以傳參,可以復用

   每個新實例引入的構造函數屬性都是私有的

缺點呢:::耗內存。。子類的構造函數

4,原型式繼承

特點呢:::類似於復制一個對象,用函數來包裝

缺點::所有的實例都會繼承原型上的屬性

無法實現復用

5,寄生式繼承

特點呢:::::沒有創建自定義類型,因為只是套了個殼子返回對像,這個函數順理成章就成了創建的新對象

缺點呢::::沒有用到原型,無法復用

6,寄生組合式繼承

特點:::
只調用了一次超類構造函數,效率更高。避免在 SuberType.prototype上面創建不必要的、多余的屬性,與其同時,原型鏈還能保持不變。
因此寄生組合繼承是引用類型最理性的繼承范式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM