从祖先克隆一个对象

时间:2016-07-05 14:38:49

标签: javascript clone

在Javascript(ES6)中,我定义了一个继承类树:

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

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

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

依此类推(D级也扩展B等)。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

尝试使用this.constructor



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

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

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