Enums không liên quan gì đến OOP và JavaScript không có enums. Thay vào đó, enum được sử dụng bất cứ khi nào có sự lựa chọn giữa một bộ giá trị cố định. Ví dụ, boolean là sự lựa chọn giữa đúng và sai, có thể được thực hiện như enum Bool { False, True }
. Trong thư viện GUI, chúng tôi có thể có một bảng liệt kê để sắp xếp : enum HAlignment { LEFT = -1, CENTER = 0, RIGHT = 1 }
.
Nó thường không liên quan như thế nào enum được thực hiện, phần quan trọng là mỗi giá trị có thể là khác biệt. Nhiều ngôn ngữ sử dụng số nguyên cho enums, mặc dù một số ngôn ngữ như Java hỗ trợ các đối tượng tùy ý.
Cho đến bây giờ, chúng ta cũng có thể sử dụng các hằng số, vd const int LEFT = -1, CENTER = 0, RIGHT = 1
. Tuy nhiên, một trình biên dịch biết rằng các giá trị enum thuộc về nhau. Vì vậy, khi tôi chuyển qua các giá trị enum switch(value) {case LEFT: ...; case RIGHT: ...;}
, trình biên dịch có thể cảnh báo tôi rằng tôi đã quên CENTER
trường hợp này. Đây có thể là một tiết kiệm thời gian đáng kể. Trong các ngôn ngữ không có enum hoặc không có cấu trúc trường hợp chuyển đổi, điều này có thể được mô phỏng với Mẫu khách truy cập, mặc dù điều đó hữu ích hơn khi có kiểu gõ tĩnh.
Ưu điểm khác là enums có thể được coi là một loại riêng biệt. Ví dụ, tôi có thể khai báo rằng một phương thức lấy một HAlignment
tham số, thay vì bất kỳ số nguyên nào. Sau đó, mã sẽ không biên dịch được nếu tôi cung cấp bất cứ thứ gì ngoại trừ một trong ba giá trị HAlocation có thể. Tuy nhiên, enum của C không được đóng gói tốt và các hằng số enum có thể được sử dụng thay thế cho nhau với các số nguyên. Các ngôn ngữ khác chặt chẽ hơn ở đây.
Trong JavaScript, chúng tôi không nhận được bất kỳ lợi ích nào trong số này. Ví dụ đã cho khai báo một đối tượng được coi là enum. Điều này có một số lợi thế cho lập trình viên, ví dụ như nó làm cho tài liệu dễ dàng hơn, nhóm tất cả các hằng số trên mạng thành một đối tượng duy nhất, khác. Tuy nhiên, nó chỉ là một quy ước rằng một đối tượng như vậy là giống như enum.
Vấn đề ở đây là HTML chỉ có một bộ thẻ hữu hạn và đã biết. Bạn có thể xem đặc tả HTML5 và đặt các tên thành phần đó làm enum vào mã của mình và do đó làm cho việc lén <blink>
thẻ vào chương trình của bạn trở nên khó khăn hơn . Tốt hơn là mã hóa kiến thức này ở một nơi để xả mã của bạn bằng các chuỗi ký tự đặc biệt (hoặc tệ hơn, số ma thuật).