国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

web前端tips:js繼承——組合繼承

2023-08-17 14:57 作者:上課我們聊QQ  | 我要投稿


上篇文章給大家分享了 js繼承中的借用構造函數(shù)繼承

web前端tips:js繼承——借用構造函數(shù)繼承

在借用構造函數(shù)繼承中,我提到了它的缺點

無法繼承父類原型鏈上的方法和屬性,只能繼承父類構造函數(shù)中的屬性和方法
父類的方法無法復用,每個子類實例都會創(chuàng)建一份方法的副本

有沒有方法解決這個缺點捏?

組合繼承

聽名字,即可明白肯定是多個繼承方法組合在一起實現(xiàn)js的繼承,突出各自優(yōu)點,互補各自缺點。

組合繼承是JavaScript中實現(xiàn)繼承的一種常見方式。它通過結合原型鏈和構造函數(shù)來實現(xiàn)繼承。

具體而言,組合繼承通過在子類構造函數(shù)中調(diào)用父類構造函數(shù),從而繼承父類的屬性,并且使用原型鏈繼承父類的方法。

以下是實現(xiàn)組合繼承的基本步驟:

  1. 創(chuàng)建父類構造函數(shù):定義一個父類構造函數(shù),用來初始化父類的屬性和方法

  2. 創(chuàng)建子類構造函數(shù):定義一個子類構造函數(shù),通過調(diào)用父類構造函數(shù)來繼承父類的屬性,并設置子類自己的屬性。

  3. 繼承父類的方法:將子類的原型對象設置為父類的實例,從而繼承父類的方法。

  4. 添加子類特有的方法:在子類的原型對象上添加子類特有的方法。

  5. 創(chuàng)建子類實例:通過子類構造函數(shù)創(chuàng)建子類的實例,并調(diào)用繼承自父類的方法以及子類自己的方法。

通過以上步驟,你就可以使用組合繼承在JavaScript中實現(xiàn)父類和子類之間的繼承關系。這種方式既能夠繼承父類的屬性,又能夠繼承父類的方法,并且還能添加子類特有的方法。

優(yōu)點

  • 子類實例能夠擁有父類的屬性和方法,包括通過原型繼承得到的共享方法。

  • 子類實例能夠擁有自己獨有的屬性和方法。

  • 使用原型鏈繼承時,父類的原型方法可以在子類實例上直接訪問,減少了內(nèi)存占用。

  • 借用構造函數(shù)繼承可以避免引用類型屬性的共享問題。

缺點

  • 在使用組合繼承時,每次創(chuàng)建子類實例都會調(diào)用一次父類的構造函數(shù),導致父類的屬性被重復定義。

  • 原型鏈繼承會將父類的屬性方法復制到子類的原型上,可能導致內(nèi)存占用過大。

  • 組合繼承需要調(diào)用兩次父類的構造函數(shù),一次是在子類的構造函數(shù)中調(diào)用?Parent.call(this),一次是通過?Child.prototype = new Parent()?實現(xiàn)原型繼承。這樣做既增加了調(diào)用次數(shù),也可能導致父類構造函數(shù)中的邏輯被執(zhí)行多次。

總結來說,組合繼承是一種常用的繼承方式,它既能夠繼承父類的屬性和方法,又能夠擁有自身獨有的屬性和方法。但它的缺點是在創(chuàng)建子類實例時會重復調(diào)用父類的構造函數(shù),可能導致內(nèi)存占用過大,并且需要額外處理父類構造函數(shù)中的邏輯。

結語

牽手 持續(xù)為你分享各類知識和軟件 ,歡迎訪問、關注、討論 并留下你的小心心?


web前端tips:js繼承——組合繼承的評論 (共 條)

分享到微博請遵守國家法律
喀喇沁旗| 新余市| 元朗区| 绥芬河市| 大安市| 夏邑县| 水富县| 莎车县| 长宁区| 芷江| 台前县| 油尖旺区| 乌拉特前旗| 广东省| 石楼县| 邵东县| 新龙县| 晋中市| 嵊州市| 封开县| 通渭县| 东港市| 广丰县| 英德市| 建宁县| 菏泽市| 平江县| 开远市| 嘉禾县| 遂平县| 弋阳县| 泰来县| 雅江县| 桑日县| 安丘市| 商水县| 景东| 柘荣县| 老河口市| 东方市| 清原|