Enum tidak ada hubungannya dengan OOP, dan JavaScript tidak memiliki enum. Sebaliknya, enum digunakan setiap kali ada pilihan antara satu set nilai tetap. Sebagai contoh, boolean adalah pilihan antara benar dan salah, yang dapat diimplementasikan sebagai enum Bool { False, True }
. Dalam perpustakaan GUI, kita mungkin memiliki enum untuk keberpihakan: enum HAlignment { LEFT = -1, CENTER = 0, RIGHT = 1 }
.
Biasanya tidak relevan bagaimana enum diimplementasikan, bagian yang penting adalah bahwa setiap nilai yang mungkin berbeda. Banyak bahasa menggunakan bilangan bulat untuk enum, meskipun beberapa seperti Java mendukung objek sewenang-wenang.
Sampai sekarang, kita bisa menggunakan konstanta, misalnya const int LEFT = -1, CENTER = 0, RIGHT = 1
. Namun, kompiler tahu bahwa nilai enum adalah milik bersama. Jadi ketika saya beralih nilai enum switch(value) {case LEFT: ...; case RIGHT: ...;}
, kompiler dapat memperingatkan saya bahwa saya lupa CENTER
kasusnya. Ini bisa menghemat waktu. Dalam bahasa tanpa enum atau tanpa konstruksi kasus sakelar, ini dapat disimulasikan dengan Pola Pengunjung, meskipun itu lebih membantu dengan adanya pengetikan statis.
Keuntungan lainnya adalah enum dapat diperlakukan sebagai tipe terpisah. Misalnya saya dapat menyatakan bahwa suatu metode membutuhkanHAlignment
parameter, daripada bilangan bulat apa pun. Kode kemudian akan gagal dikompilasi jika saya memberikan apa pun kecuali satu dari tiga nilai HAlignment yang mungkin. Namun, enum C tidak dienkapsulasi dengan baik dan konstanta enum dapat digunakan secara bergantian dengan bilangan bulat. Bahasa lain lebih ketat di sini.
Dalam JavaScript, kami tidak mendapatkan manfaat ini. Contoh yang diberikan mendeklarasikan objek yang diperlakukan sebagai enum. Ini memang memiliki beberapa keuntungan bagi programmer, misalnya membuat dokumentasi lebih mudah, mengelompokkan semua "konstanta" menjadi satu objek, .... Namun, itu hanya sebuah konvensi bahwa objek seperti itu seperti enum.
Intinya di sini adalah bahwa HTML hanya memiliki serangkaian tag yang terbatas dan dikenal. Anda dapat melihat spesifikasi HTML5 dan memasukkan nama elemen itu sebagai enum ke dalam kode Anda, dan karenanya membuatnya lebih sulit untuk menyelinap <blink>
tag ke dalam program Anda. Lebih baik untuk menyandikan pengetahuan ini di satu tempat yang membuang kode Anda dengan literal string khusus (atau lebih buruk, angka ajaib).