정적 초기화 블록

정적 초기화 블록은 매우 새로운 JavaScript 기능으로, ECMAScript 2022는 최신 브라우저입니다. 정적 초기화 블록을 사용하면 정적 필드의 값을 동적으로 설정할 수 있습니다. 여러 문에 걸쳐 있는 로직을 사용하여 머신러닝 모델을 학습시킬 수 있습니다

정적 초기화 블록을 만들려면 static 키워드 뒤에 곱슬곱슬한 형태의 블록 문 대괄호 ({}):

class MyClass {
  static {}
}

이 패턴을 사용하면 있습니다.

class MyClass {
  static firstProperty = 'First property.';
  static secondProperty;
  static {
    this.secondProperty = 'Second property.';
  }
}

MyClass.secondProperty;
"Second property."

이러한 문은 클래스가 처음 초기화될 때 평가되며, 즉, 자바스크립트 엔진이 API를 처음 평가할 때이며, 클래스가 생성됩니다. 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."

이해도 확인

다음 중 올바른 설명은 무엇인가요?

하나의 클래스에는 정적 초기화 블록이 하나만 포함될 수 있습니다.
정적 초기화 블록 이후에 선언된 필드를 사용할 수 있습니다. 넣으십시오.
정적 초기화 블록은 클래스가 다음과 같을 때 평가됩니다. 있습니다.