JS手写代码之寄生组合继承和ES6继承


寄生组合继承和 ES6 继承

ES5 的继承,实质是先创造子类的实例对象,然后将再将父类的方法添加到 this 上。 ES6 的继承,先创造父类的实例对象(所以必须先调用 super 方法,然后再用子类的构造函数修改 this

寄生组合继承

function Super(foo) {
  this.foo = foo;
}
Super.prototype.printFoo = function () {
  console.log(this.foo);
};
function Sub(bar) {
  this.bar = bar;
  // 调用父类的构造函数
  Super.call(this);
}
// 将子类是原型绑定在父类原型的复制对象上,之后修改子类原型就不会影响父类原型
Sub.prototype = Object.create(Super.prototype);
// 让子类原型的构造函数指向子类构造函数
Sub.prototype.constructor = Sub;

ES6 继承

class Super {
  constructor(foo) {
    this.foo = foo;
  }
  printFoo() {
    console.log(this.foo);
  }
}
class Sub extends Super {
  constructor(foo, bar) {
    Super(foo);
    this.bar = bar;
  }
}

文章作者: CassielLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CassielLee !
评论
  目录