2016-02-02 9 views
5

ES6では、以下のような静的メソッドを作成できます。しかし、私は静的なコンストラクタを定義する必要がありますが、成功はありません。クラスがロードされるときに一度しか動かないものが必要です。私はこれのようなものを実装する方法はありますか?Javascript ES6の静的コンストラクタ

class Commander{ 

    static onData(){ 
     console.log("blabla"); 
    } 
} 
+0

クラスの最初のインスタンスが作成されるときに、いくつかのロジックを行う必要がありますか? – madox2

+0

コンストラクタにチェックを入れることができます。静的変数が設定されていない場合は、初期化を行い、その静的変数をtrueに設定します。 – Cristy

+0

実際に私はこのクラスのインスタンスを取得しません。直接Commander.onData()などのように使用しています。 –

答えて

5

私はクラスがロードされたときに一度だけ実行されるものが必要。

クラスをメソッドの袋として使用する場合は、クラスを使用しないでください。代わりにオブジェクトを使用してください。しかし、そのようなコードを実行することはまだ可能です。クラス定義の前後に入れてください。

console.log('before class is created') 

class Foo {} 

console.log('after class was created'); 
2

静的コンストラクタを使用する場合:静的メソッドを定義し、クラス定義の後に呼び出します。

class Foo { 
    static staticConstructor() { 
    console.log('Foo has been constructed statically!'); 
    } 
} 

Foo.staticConstructor() 

もちろんこれは実際には必要ではありません。静的なコンストラクタの概念を明確に表現するためにmabyeを除いて。しかし、これはJavaのようなにおいがします。

Felixは、クラス定義の前後にコードを入れて優れた解決策を提案しました。

例:いくつかの静的メンバーを事前に計算しますか?クラス定義の後に計算結果を代入するだけです!

class Foo {} 

Foo.preCalculated = calculate(); 

function calculate() { 
    console.log('Do some hard work here'); 
    return 'PRECALCULATED'; 
} 
関連する問題