在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
,并且所有函数都是继承类中定义的属性?
答案 0 :(得分:2)
尝试使用this.constructor
:
class A {
foo() { return new (this.constructor) }
}
class B extends A {
jj() { console.log('jj') }
}
(new B).foo().jj()