Thành viên tĩnh - Static Member
Thành viên tĩnh của một lớp bao gồm phương thức tĩnh và thuộc tính tĩnh.
- Phương thức tĩnh được định nghĩa trong lớp (không được định nghĩa trên đối tượng thể hiện
this
) - Thuộc tính tĩnh được định nghĩa thông qua truy cập vào thuộc tính của đối tượng (đề xuất mới cung cấp từ khóa
static
để định nghĩa)
Phương thức tĩnh
Lớp tương đương với nguyên mẫu của đối tượng, tất cả các phương thức được định nghĩa trong lớp đều được thể hiện kế thừa.
Nếu một phương thức được đặt trước từ khóa static
, điều này có nghĩa là phương thức đó không được thể hiện kế thừa, mà cần được gọi trực tiếp thông qua lớp, điều này được gọi là phương thức tĩnh.
Phạm vi động
⚠️ Lưu ý: Nếu phương thức tĩnh chứa từ khóa this
, this
sẽ trỏ đến lớp, không phải là thể hiện.
Kế thừa từ lớp con
Phương thức tĩnh của lớp cha có thể được kế thừa bởi lớp con.
Thuộc tính tĩnh
Vì trong ES6 đã quy định rõ ràng, lớp chỉ có phương thức tĩnh, không có thuộc tính tĩnh được định nghĩa trực tiếp trong lớp.
Hiện tại có một đề xuất về thuộc tính tĩnh, định rõ cách viết mới cho thuộc tính của thể hiện và thuộc tính tĩnh.
Trước đây, cần định nghĩa thuộc tính của thể hiện trong hàm tạo của lớp.
Bây giờ, thuộc tính của thể hiện có thể được viết bằng phương trình, được viết trong định nghĩa của lớp. Cách viết này rõ ràng hơn so với trước đây.
Vì mục đích đọc hiểu, cách viết mới cho phép liệt kê trực tiếp các thuộc tính đã được định nghĩa trong hàm tạo.
Thuộc tính tĩnh của lớp chỉ cần thêm từ khóa static
trước cách viết thuộc tính của thể hiện như trên.
Cách viết mới là khai báo rõ ràng (declarative), không phải gán giá trị, có ý nghĩa ngữ nghĩa tốt hơn.