Наследовать выполнение статических блоков инициализатора в JavaScript
У меня есть код вроде:
class A {
static {
console.log("A");
}
}
class B extends A {
static {
console.log("B");
}
}
Почему он не печатает дважды? Я хотел бы, чтобы в JavaScript выполнялся код класса всякий раз, когда он расширяется. Есть ли способ добиться этого?
Конечно, я мог бы просто добавить статический метод вA
сам и вызываю его после объявленияB
, но интересно, возможно ли это уже через ES2022.
1 ответ
Потому что он так задуман. Статический инициализатор вызывается только один раз для инициализируемого класса. Хотя это большой позор. Это позволило бы использовать перехватчик подклассов в Javascript, который совершенно отсутствует, если вы хотите избежать использования фабричных методов.