从祖先克隆一个对象

clone an object from the ancestor

在Javascript(ES6)中,我定义了一棵继承classes的树:

class A {
  constructor () {
    (...)
  }
}

class B extends A {
  constructor () {
    (...)
    super();
  }
}

class C extends B {
  constructor () {
    (...)
    super();
  }
}

依此类推(a class D 也扩展了 B,等等)。

现在,在 A 中,我想编写一个函数 resolve 来克隆当前对象并仅更改其某些字段。

class A {
  (...)
  resolve() {
    // I want to clone this
    const newClass = ???
  }
}

是否可以从A获取嵌套的继承构造函数?
例如,如果我是 C,是否可以从 resolve 创建一个新的 C

否则,是否可以克隆 this 所有函数都是在继承的 classes 中定义的属性?

尝试使用 this.constructor:

class A {
  foo() { return new (this.constructor) }
}

class B extends A {
  jj() { console.log('jj') }
}

(new B).foo().jj()