Statyczne bloki inicjowania to nowa funkcja JavaScript ustandaryzowana ECMAScript 2022 i obsługiwane tylko w nowoczesnych przeglądarek. Statyczne bloki inicjowania umożliwiają dynamiczne ustawianie wartości pól statycznych, za pomocą logiki obejmującej wiele instrukcji.
Aby utworzyć statyczny blok inicjowania, użyj słowa kluczowego static
, a następnie
instrukcja blokowa w ciągu znaków curly
nawiasy ({}
):
class MyClass {
static {}
}
Ten wzorzec umożliwia inicjowanie lub zmianę pól statycznych zadeklarowanych w treści zajęcia:
class MyClass {
static firstProperty = 'First property.';
static secondProperty;
static {
this.secondProperty = 'Second property.';
}
}
MyClass.secondProperty;
"Second property."
Te instrukcje są oceniane w momencie pierwszego zainicjowania klasy, która
gdy mechanizm JavaScript najpierw go oceni, a nie wystąpienie
zostało utworzone zajęcia, podobnie jak w przypadku klasy constructor()
:
class MyClass {
static {
console.log( "Static initialization block." );
}
constructor() {
console.log( "Constructor." );
}
}
> "Static initialization block."
const myClassInstance = new MyClass();
> "Constructor."
Klasa może zawierać wiele statycznych bloków inicjowania, które są: są oceniane w kolejności, w jakiej są zadeklarowane, razem z pozostałymi polami statycznymi i . Oznacza to, że tylko pola zadeklarowane przed zainicjowaniem statycznym bloki:
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."
Sprawdź swoją wiedzę
Które z poniższych stwierdzeń jest prawdziwe?