āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻŦā§āϞāĻ•

āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻŦā§āϞāĻ• āĻšāϞ āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āύāϤ⧁āύ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ, āϝāĻž ECMAScript 2022-āĻ āĻĒā§āϰāĻŽāĻŋāϤ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āφāϧ⧁āύāĻŋāĻ• āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤāĨ¤ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻŦā§āϞāĻ• āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻĢāĻŋāĻ˛ā§āĻĄā§‡āϰ āĻŽāĻžāύ āĻĄāĻžāϝāĻŧāύāĻžāĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ, āϞāϜāĻŋāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻ¸ā§āĻŸā§‡āϟāĻŽā§‡āĻ¨ā§āϟ āĻŦāĻŋāĻ¸ā§āϤ⧃āϤ āĻ•āϰ⧇āĨ¤

āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻŦā§āϞāĻ• āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇, āϕ⧋āρāĻ•āĻĄāĻŧāĻž āĻŦāĻ¨ā§āϧāύ⧀āϤ⧇ āĻāĻ•āϟāĻŋ āĻŦā§āϞāĻ• āĻ¸ā§āĻŸā§‡āϟāĻŽā§‡āĻ¨ā§āϟ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇ static āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ ( {} ):

class MyClass {
  static {}
}

āĻāχ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻŽā§‚āϞ āĻ…āĻ‚āĻļ⧇ āĻ˜ā§‹āώāĻŋāϤ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻ•ā§āώ⧇āĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻļ⧁āϰ⧁ āĻŦāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ:

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

MyClass.secondProperty;
"Second property."

āĻāχ āĻŦāĻŋāĻŦ⧃āϤāĻŋāϗ⧁āϞāĻŋ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ āĻĒā§āϰāĻĨāĻŽ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ, āĻ…āĻ°ā§āĻĨāĻžā§Ž, āϝāĻ–āύ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āχāĻžā§āϜāĻŋāύ āĻāϟāĻŋāϕ⧇ āĻĒā§āϰāĻĨāĻŽ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰ⧇, āϤāĻ–āύ āύāϝāĻŧ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ, āϝ⧇āĻŽāύ 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."

āφāĻĒāύāĻžāϰ āωāĻĒāϞāĻŦā§āϧāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ

āύāĻŋāĻšā§‡āϰ āϕ⧋āύ āĻŦāĻŋāĻŦ⧃āϤāĻŋāϟāĻŋ āϏāĻ¤ā§āϝ?

āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻŦā§āϞāϕ⧇āϰ āĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ āϝāĻ–āύ āĻ•ā§āϞāĻžāϏāϟāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻŦā§āϞāĻ• āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻŦā§āϞāϕ⧇āϰ āĻĒāϰ⧇ āĻ˜ā§‹āώāĻŋāϤ āĻ•ā§āώ⧇āĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻŦā§āϞāϕ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āωāĻĒāϞāĻŦā§āϧāĨ¤