CNode

es6的class动态继承的问题

问答
Rrwing发布于10 年前最后回复10 年前7 回复6283 浏览0 收藏

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

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

查看回复

回复 (7)

X
xcatliu#1·10 年前
class A {
  constructor() {
    this.name = 'A';
  }
  print() {
    console.log('name:' + this.name);
  }
}
class B extends A {
}
let b = new B();
b.print();
// name:A
R
rwing#2·10 年前
引用 xcatliu

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

A
AnzerWall#3·10 年前

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
AnzerWall#4·10 年前

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

R
rwing#5·10 年前
引用 AnzerWall不改变A B是做不到,你就算是继承,你也要手动调用super()

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

X
xcatliu#6·10 年前
引用 rwing@xcatliu 掀桌 就是想在运行时去继承啊。。。。。。。动态的让B继承A。。。。。

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

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

B
blackjack#7·10 年前

原型链的可以吧

参与回复
登录后即可参与回复。登录