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

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