2016-11-23 5 views
0

新しいインスタンスを生成した静的関数を作成しようとしています。インスタンスは、静的関数が属するクラスのインスタンスです。es6静的関数からクラスコンストラクタにアクセスする

は、ここでは一例

class A { 
    static getInstance() { 
    return new A(); 
    } 
} 

let a = A.getInstance();が正常に動作しますこれまでのところは良いことです。

子供のクラスでこの機能を継承したいと考えています。

class B extends A {} 
let b = B.getInstance(); // This will return an instance of A. 

私はあなたがコンストラクタ/発電機のいくつかの並べ替えとしてクラスを渡したいと..私はあなたがこれをしたいと仮定しB.getInstance()これは動作するようですB.

+1

'静的のgetInstance(){この新しい返します。 } ' – Keith

答えて

1

のインスタンスを返すようにしたいです。 new A()を実行すると、明らかに少し単純になります。

class A { 
 
    sayIt() { console.log('I am A'); } 
 
    static getInstance() { 
 
    return new this; 
 
    } 
 
} 
 

 
class B extends A { sayIt() { console.log('I am B') } } 
 

 
var k = A.getInstance(); 
 
k.sayIt(); 
 

 
let b = B.getInstance(); 
 
b.sayIt(); 
 

 
let k2 = new A(); 
 
k2.sayIt(); 
 

 
let b2 = new B(); 
 
b2.sayIt();

+0

キースが注目してくれてありがとう。それは動作します。あなたの答えに基づいて、sayIt()をstaticに変更すると、 '私はBです'を '私は$ {this.name}'に置き換えることができます。正確に私の問題を解決する。再度、感謝します。 – SagiSergeNadir

関連する問題