千鋒教育JavaScript全套視頻教程(10天學(xué)會Js,前端javascrip

?繼承概述
1.子類繼承父類,不能影響父類
2.繼承是和構(gòu)造函數(shù)(類)相關(guān)的一個應(yīng)用是指,讓一個構(gòu)造函數(shù)去繼承另一個構(gòu)造函數(shù)的屬性和方法
3.所以繼承一定出現(xiàn)在 兩個構(gòu)造函數(shù)之間
幾種繼承的方式
借用構(gòu)造函數(shù)繼承 - 混合開發(fā)
把父類構(gòu)造函數(shù)體借用過來使用一下而已(只能借到父類構(gòu)造函數(shù)里面的屬性和方法)
優(yōu)點(diǎn)是子類不再共享父類的屬性,子類可以進(jìn)行傳參
缺點(diǎn)是子類每次實(shí)例化的時(shí)候,父類的方法都要創(chuàng)建一遍,造成內(nèi)存浪
?
ES6的繼承 - 最重要的
extends
Class 可以通過extends關(guān)鍵字實(shí)現(xiàn)繼承,讓子類繼承父類的屬性和方法。
extends 的寫法比 ES5 的原型鏈繼承,要清晰和方便很多
super
super這個關(guān)鍵字,既可以當(dāng)作函數(shù)使用,也可以當(dāng)作對象使用。
第一種情況,super作為函數(shù)調(diào)用時(shí),代表父類的構(gòu)造函數(shù)。
第二種情況,super作為對象時(shí),在普通方法中,指向父類的原型對象
?
原型鏈繼承
Son.prototype = new father();
利用原型鏈來繼承父類原型上面的成員,弊端修改子類的構(gòu)造函數(shù)
Son.prototype.constructor = Son;
恢復(fù)子類的構(gòu)造函數(shù)
組合繼承
?
寄生組合繼承
Object.create()這個方法用于創(chuàng)建一個新對象,使現(xiàn)有的對象來提供新創(chuàng)建的對象的__proto__。被創(chuàng)建的對象會繼承另一個對象的原型。