2016-07-05 5 views
2

から目的は、私は、継承されたクラスのツリー定義:クローンの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を作成できますか?

それ以外の場合は、すべての機能が継承されたクラスで定義されている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

関連する問題