es6的class动态继承的问题
现在这样,不会调用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 的结构就乱套了。
原型链的可以吧