如何在ES6中调用班级的父级的父级构造函数?

Jul*_*ian 5 javascript ecmascript-6

我正在使用ES6类,而我的类(A)扩展了类B,类B扩展了类C。A如何扩展一个方法,然后调用该方法的C版本。

class C {
  constructor() {
    console.log('class c');
  }
}

class B extends C {
  constructor() {
    super()
    console.log('no, I don't want this constructor.');
  }
}

class A extends B {
  constructor() {
    // What should I be doing here?  I want to call C's constructor.
    super.super();
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢,我将停止尝试做这个愚蠢的事情。在我的情况下,代码重用的次要收获不值得杂技。

Ry-*_*Ry- 5

您不能在ES6类中调用父级的构造函数。从您的评论来看,也许您应该尝试这样的事情?

class Mixin {
  static include(constructor) {
    const descriptors = Object.getOwnPropertyDescriptors(Mixin.prototype);

    Object.keys(descriptors).forEach(name => {
      Object.defineProperty(constructor.prototype, name, descriptors[name]);
    });
  }

  someCommonFunction() {
    // Perform operation common to B and C
  }
}

delete Mixin.prototype.constructor;

class B extends A {
}

Mixin.include(B);

class C extends A {
}

Mixin.include(C);
Run Code Online (Sandbox Code Playgroud)