Satırların OOP ile ilgisi yoktur ve JavaScript'in sayıları yoktur. Bunun yerine, sabit bir değerler kümesi arasında bir seçim olduğunda, enums'ler kullanılır. Örneğin, bir boolean olarak uygulanabilecek doğru ve yanlış arasında bir seçimdir enum Bool { False, True }
. Bir GUI kütüphanesinde, biz Hizalanmaları bir enum sahip olabilir: enum HAlignment { LEFT = -1, CENTER = 0, RIGHT = 1 }
.
Enum'un nasıl uygulandığı genellikle önemli değildir, önemli olan her olası değerin farklı olmasıdır. Pek çok dil, Java gibi bazıları rastgele nesneleri desteklese de, enums'ler için tamsayılar kullanır.
Şimdiye kadar, örneğin sabitler de kullanabilirdik const int LEFT = -1, CENTER = 0, RIGHT = 1
. Ancak, bir derleyici enum değerlerinin birbirine ait olduğunu bilir. Bu yüzden enum değerlerini değiştirdiğimde switch(value) {case LEFT: ...; case RIGHT: ...;}
, derleyici CENTER
davayı unuttuğum konusunda beni uyarabilir . Bu önemli bir zaman tasarrufu olabilir. Numaralandırmalı veya anahtarsız yapılı olmayan dillerde, statik yazmanın varlığında daha faydalı olmasına rağmen, Ziyaretçi Deseniyle simüle edilebilir.
Diğer bir avantaj ise, çukurların ayrı bir tip olarak ele alınabilmesidir. Örneğin, bir yöntemin HAlignment
herhangi bir tamsayı yerine bir parametre aldığını ilan edebilirim . O zaman üç olası HAlignment değerinden biri dışında bir şey sağlarsam kod derlenemez. Bununla birlikte, C'nin enumları enkapsüle edilmemiştir ve enum sabitleri tamsayılarla değişimli olarak kullanılabilir. Diğer diller burada daha katıdır.
JavaScript’te bu avantajlardan hiçbirini alamıyoruz. Verilen örnek, enum olarak kabul edilen bir nesneyi bildirir. Bunun programcı için bazı avantajları vardır, örneğin dokümantasyonu kolaylaştırır, tüm “sabitleri” tek bir nesneye gruplandırır,…. Ancak, böyle bir nesnenin enum benzeri olduğu yalnızca bir kuraldır.
Buradaki nokta, HTML'nin yalnızca sınırlı ve bilinen bir etiket kümesine sahip olmasıdır. HTML5 teknik özelliklerine bakabilir ve bu öğe adlarını kodunuza bir enum olarak koyabilir ve bu nedenle <blink>
programınıza bir etiket gizlice sokmayı zorlaştırabilirsiniz . Bu bilgiyi tek bir yerde kodlamak, kodunuzu özel dizgi değişmezleri (veya daha kötüsü, sihirli sayılar) ile karıştırmak için daha iyidir.