ES6では、以下のような静的メソッドを作成できます。しかし、私は静的なコンストラクタを定義する必要がありますが、成功はありません。クラスがロードされるときに一度しか動かないものが必要です。私はこれのようなものを実装する方法はありますか?Javascript ES6の静的コンストラクタ
class Commander{
static onData(){
console.log("blabla");
}
}
ES6では、以下のような静的メソッドを作成できます。しかし、私は静的なコンストラクタを定義する必要がありますが、成功はありません。クラスがロードされるときに一度しか動かないものが必要です。私はこれのようなものを実装する方法はありますか?Javascript ES6の静的コンストラクタ
class Commander{
static onData(){
console.log("blabla");
}
}
私はクラスがロードされたときに一度だけ実行されるものが必要。
クラスをメソッドの袋として使用する場合は、クラスを使用しないでください。代わりにオブジェクトを使用してください。しかし、そのようなコードを実行することはまだ可能です。クラス定義の前後に入れてください。
console.log('before class is created')
class Foo {}
console.log('after class was created');
静的コンストラクタを使用する場合:静的メソッドを定義し、クラス定義の後に呼び出します。
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';
}
クラスの最初のインスタンスが作成されるときに、いくつかのロジックを行う必要がありますか? – madox2
コンストラクタにチェックを入れることができます。静的変数が設定されていない場合は、初期化を行い、その静的変数をtrueに設定します。 – Cristy
実際に私はこのクラスのインスタンスを取得しません。直接Commander.onData()などのように使用しています。 –