2016-07-05 75 views
2

在Javascript中(ES6)克隆对象,我定义继承类的树:从祖先

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

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

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

等等(类d延伸乙太等)。

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

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

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

否则,是否有可能克隆this所有功能都是在继承类中定义的属性?

回答

2

尝试使用this.constructor

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

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

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

+1

HOOO,它不可能是那么容易!谢谢,你让我的一天:) – Guid