es6的class动态继承的问题
发布于 7 年前 作者 rwing 4728 次浏览 来自 问答

F7B24EEE-3B58-4DDF-8CAE-85010821D5E7.png

现在这样,不会调用A的构造函数,如何在不改变A和B的前提下,动态继承,并且调用A的构造函数?

7 回复
class A {
  constructor() {
    this.name = 'A';
  }
  print() {
    console.log('name:' + this.name);
  }
}
class B extends A {
}
let b = new B();
b.print();
// name:A

@xcatliu 掀桌~~~就是想在运行时去继承啊。。。。。。。动态的让B继承A。。。。。

class A{ print(){ console.log(‘A’); } } class B{ print(){ console.log(‘B’); } } function get(type) { return type===‘A’?A:B; } function fac(type) { return class C extends get(type){ constructor(){ super(); console.log(‘i am c’); } } } let T=fac(‘A’); let t=new T(); t.print();

不改变A B是做不到,你就算是继承,你也要手动调用super()

@AnzerWall 你看2楼的用extends的方式,B里就没显式调用super啊 class B extends A { }

@rwing 😝 一开始没看清题意。

运行时继承?即使可以做到也最好不要这么干吧。这样整个 oop 的结构就乱套了。

原型链的可以吧

回到顶部