原理:原型链继承 + 借用构造函数继承 原型链继承 负责将父类公有 继承为子类的公有属性 借用构造函数继承 负责将父类私有 继承为子类的私有属性
缺点: 1.会把父类的私有属性继承过来两份 一份作为自己的私有 一份作为自己的公有 2.继承时,调用了两次父类
function A() {
this.a = '私有'
}
A.prototype.text = '公有'
// 原型链继承 负责继承公有
B.prototype = new A()
B.prototype.constructor = B
function B() {
// 借用构造函数继承 负责继承私有
A.call(this)
}
let b = new B()
// text属性 是利用原型链继承 从父类继承过来的公有属性
console.log(b.text) // '公有'
// a属性 是利用借用构造函数 从父类继承过的私有属性
console.log(b.a) // '私有'