关于js继承
繼承在js中占有非常重要的地位,那么在js中有很多中繼承的方式,不過每一種繼承方式都有優(yōu)缺點。下面就列舉幾種繼承的方式。
實現(xiàn)繼承首先需要一個父類,在js中實際上是沒有類的概念,在es6中class雖然很像類,但實際上只是es5上語法糖而已
一、原型鏈繼承
實現(xiàn):
? ? ? ? 將父類的實例掛載到子類的原型上
?
?優(yōu)點:
? ? ? ? 實例可繼承的屬性有:實例的構(gòu)造函數(shù)的屬性,父類構(gòu)造函數(shù)屬性,父類原型的屬性
?缺點:
? ? ? ? ? ?1、新實例無法向父類構(gòu)造函數(shù)傳參。
2、繼承單一。
3、所有新實例都會共享父類實例的屬性。
二、 構(gòu)造函數(shù)繼承
用.call()和.apply()將父類構(gòu)造函數(shù)引入子類函數(shù)(在子類函數(shù)中做了父類函數(shù)的自執(zhí)行(復(fù)制))
?
?優(yōu)點:1、只繼承了父類構(gòu)造函數(shù)的屬性,沒有繼承父類原型的屬性。
?2、解決了原型鏈繼承缺點1、2、3。
? 3、可以繼承多個構(gòu)造函數(shù)屬性(call多個)。
?4、在子實例中可向父實例傳參。
缺點:1、只能繼承父類構(gòu)造函數(shù)的屬性。
?2、無法實現(xiàn)構(gòu)造函數(shù)的復(fù)用。(每次用每次都要重新調(diào)用)
?3、每個新實例都有父類構(gòu)造函數(shù)的副本,臃腫。
三、 組合式繼承
?優(yōu)點:1、可以繼承父類原型上的屬性,可以傳參,可復(fù)用。
? 2、每個新實例引入的構(gòu)造函數(shù)屬性是私有的。
缺點:調(diào)用了兩次父類構(gòu)造函數(shù)(耗內(nèi)存),子類的構(gòu)造函數(shù)會代替 ? ?原型上的那個父類構(gòu)造函數(shù)
?
四、class繼承
?
?es6繼承?class定義類,?extends繼承類,? super()表示?類
?
子類可以沒有自己的構(gòu)造方法,沒有可以調(diào)用父親的,但是有構(gòu)造方法先調(diào)用父親
?
總結(jié)
- 上一篇: Simditor富文本编辑器
- 下一篇: simditor 上传图片php,sim