静的初期化ブロックは非常に新しい JavaScript 機能であり、 ECMAScript 2022 で、 最新のブラウザ。 静的初期化ブロックを使用すると、静的フィールドの値を動的に設定できます。 複数のステートメントにまたがるロジックを 使用しています
静的初期化ブロックを作成するには、static
キーワードとその後に
curly のブロック ステートメント
角かっこ({}
):
class MyClass {
static {}
}
このパターンを使用すると、 クラス:
class MyClass {
static firstProperty = 'First property.';
static secondProperty;
static {
this.secondProperty = 'Second property.';
}
}
MyClass.secondProperty;
"Second property."
これらのステートメントは、クラスが最初に初期化されたときに評価されます。
JavaScript エンジンが最初に値を評価する際であり、
クラスが作成されます(constructor()
と同様)。
class MyClass {
static {
console.log( "Static initialization block." );
}
constructor() {
console.log( "Constructor." );
}
}
> "Static initialization block."
const myClassInstance = new MyClass();
> "Constructor."
クラスには複数の静的な初期化ブロックを含めることができ、それらのブロックは 宣言された順序で評価されます。他の静的フィールドや あります。つまり、静的初期化の前に宣言されたフィールドのみが 次のブロックがあります。
class MyClass {
static myNewField;
static {
this.myNewField = this.myField;
}
static myField = "My value.";
};
MyClass.myNewField;
> undefined
class MyCorrectedClass {
static myNewField;
static myField = "My value.";
static {
this.myNewField = this.myField;
}
};
MyCorrectedClass.myNewField;
> "My value."
理解度をチェックする
次の説明のうち正しいものはどれですか。
静的初期化ブロックの後に宣言されたフィールドが利用可能
ブロックの内側です。
1 つのクラスに含めることができる静的初期化ブロックは 1 つのみです。
静的初期化ブロックは、クラスが
初期化されます。