Khối khởi tạo tĩnh là một tính năng JavaScript rất mới, được chuẩn hoá theo ECMAScript 2022 và chỉ được hỗ trợ trong các trình duyệt hiện đại. Các khối khởi tạo tĩnh cho phép bạn tự động đặt giá trị của các trường tĩnh, bằng cách sử dụng logic trải rộng nhiều câu lệnh.
Để tạo một khối khởi động tĩnh, hãy sử dụng từ khoá static
, theo sau là một
câu lệnh khối trong dấu ngoặc nhọn
dấu ngoặc vuông ({}
):
class MyClass {
static {}
}
Mẫu này cho phép bạn khởi tạo hoặc thay đổi các trường tĩnh được khai báo trong phần nội dung của lớp:
class MyClass {
static firstProperty = 'First property.';
static secondProperty;
static {
this.secondProperty = 'Second property.';
}
}
MyClass.secondProperty;
"Second property."
Các câu lệnh này được đánh giá tại thời điểm một lớp được khởi tạo lần đầu tiên, tức là
là khi công cụ JavaScript đánh giá lần đầu tiên chứ không phải khi một thực thể của
lớp (class) được tạo, như với constructor()
:
class MyClass {
static {
console.log( "Static initialization block." );
}
constructor() {
console.log( "Constructor." );
}
}
> "Static initialization block."
const myClassInstance = new MyClass();
> "Constructor."
Một lớp có thể chứa nhiều khối khởi tạo tĩnh và các khối đó được đánh giá theo thứ tự khai báo, cùng với mọi trường tĩnh khác và . Tức là chỉ các trường được khai báo trước khi khởi chạy tĩnh có sẵn trong khối đó:
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."
Kiểm tra kiến thức
Câu nào sau đây là đúng?