继承

103 阅读1分钟
  1. 原型链继承
function A(name, age) {
    this.name = name;
    this.age = age;
}
A.prototype.getAge = (name) => name
function B(){}
B.prototype = new A()

缺点:原型链上的修改都会变成通用的

  1. 构造函数继承
function A(name, age) {
    this.name = name;
    this.age = age;
}
A.prototype.getAge = (name) => name
function B(name){
    A.call(this,name)
}
const b = new B('aa')

缺点:不能继承原型链上的方法 3. 组合继承(原型+构造函数)

function A(name, age) {
    this.name = name;
    this.age = age;
}
A.prototype.getAge = (name) => name
function B(name){
    A.call(this,name)
}
B.prototype = new A('hh')

缺点:初始化了两次

  1. 寄生组合继承
function A(name, age) {
    this.name = name;
    this.age = age;
}
A.prototype.getAge = (name) => name
function B(name){
    A.call(this,name)
}
B.prototype = Object.create(A.prototype)