ES5實(shí)現(xiàn)方法
主要從函數(shù)和原型鏈的角度上實(shí)現(xiàn)繼承搓逾,下面我們來一步步實(shí)現(xiàn)繼承
-
原型鏈繼承
原型繼承是直接讓子類的原型對(duì)象指向父類實(shí)例,當(dāng)子類實(shí)例找不到對(duì)應(yīng)的屬性和方法時(shí),就會(huì)往它的原型對(duì)象蚕涤,也就是父類實(shí)例上找,從而實(shí)現(xiàn)對(duì)父類的屬性和方法的繼承
// 父類
function Parent() {
this.name = 'jessy'
}
// 父類的原型方法
Parent.prototype.getName = function() {
return this.name
}
// 子類
function Child() {}
// 讓子類的原型對(duì)象指向父類實(shí)例, 這樣一來在Child實(shí)例中找不到的屬性和方法就會(huì)到原型對(duì)象(父類實(shí)例)上尋找
Child.prototype = new Parent()
Child.prototype.constructor = Child // 根據(jù)原型鏈的規(guī)則,順便綁定一下constructor, 這一步不影響繼承, 只是在用到constructor時(shí)會(huì)需要
// 然后Child實(shí)例就能訪問到父類及其原型上的name屬性和getName()方法
const child = new Child()
child.name // 'jessy'
child.getName() // 'jessy'
...待更