บล็อกการเริ่มต้นแบบคงที่คือฟีเจอร์ใหม่ของ JavaScript ECMAScript 2022 และรองรับใน เบราว์เซอร์สมัยใหม่ บล็อกการเริ่มต้นแบบคงที่ให้คุณตั้งค่าช่องแบบคงที่แบบไดนามิก โดยใช้ตรรกะที่ครอบคลุมคำสั่งหลายรายการ
หากต้องการสร้างบล็อกการเริ่มต้นแบบคงที่ ให้ใช้คีย์เวิร์ด static
ตามด้วย
ข้อความบล็อกเป็นเส้นโค้ง
เครื่องหมายวงเล็บเหลี่ยม ({}
):
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."
ตรวจสอบความเข้าใจ
ข้อความใดต่อไปนี้เป็นจริง