Enums का OOP से कोई लेना-देना नहीं है, और JavaScript में Enums नहीं हैं। इसके बजाय, जब भी निश्चित मानों के बीच कोई विकल्प होता है, तो एनम का उपयोग किया जाता है। उदाहरण के लिए, एक बूलियन सही और गलत के बीच एक विकल्प है, जिसे इस रूप में लागू किया जा सकता है enum Bool { False, True }
। GUI लाइब्रेरी में, हम संरेखण के लिए एक enum हो सकते हैं enum HAlignment { LEFT = -1, CENTER = 0, RIGHT = 1 }
:।
यह आमतौर पर अप्रासंगिक है कि एनम कैसे लागू किया जाता है, महत्वपूर्ण हिस्सा यह है कि प्रत्येक संभव मूल्य अलग है। कई भाषाएं एनम के लिए पूर्णांक का उपयोग करती हैं, हालांकि कुछ जावा मध्यस्थ वस्तुओं का समर्थन करते हैं।
अब तक, हम केवल स्थिरांक का उपयोग कर सकते थे, उदा const int LEFT = -1, CENTER = 0, RIGHT = 1
। हालांकि, एक संकलक जानता है कि एनम मान एक साथ हैं। इसलिए जब मैं एनम मूल्यों पर स्विच करता हूं switch(value) {case LEFT: ...; case RIGHT: ...;}
, तो कंपाइलर मुझे चेतावनी दे सकता है कि मैं CENTER
मामले को भूल गया हूं । यह पर्याप्त समय बचाने वाला हो सकता है। एनमोंस के बिना या स्विच-केस निर्माण के बिना भाषाओं में, यह विज़िटर पैटर्न के साथ अनुकरण किया जा सकता है, हालांकि यह स्थिर टाइपिंग की उपस्थिति में अधिक सहायक है।
दूसरा फायदा यह है कि एनम को एक अलग प्रकार के रूप में माना जा सकता है। उदाहरण के लिए, मैं यह घोषित कर सकता हूं कि कोई विधि HAlignment
किसी भी पूर्णांक के बजाय एक पैरामीटर लेती है । यदि मैं कुछ भी प्रदान करता हूं, लेकिन कोड तीन संभावित हैलिगमेंट मानों में से एक को संकलित करने में विफल हो जाएगा। हालाँकि, C की एनम अच्छी तरह से एनकैप्सुलेटेड नहीं हैं और एनम कॉन्स्टेंट को पूर्णांकों के साथ परस्पर उपयोग किया जा सकता है। अन्य भाषाएँ यहाँ स्पष्ट हैं।
जावास्क्रिप्ट में, हमें इनमें से कोई भी लाभ नहीं मिलता है। दिए गए उदाहरण में एक ऑब्जेक्ट घोषित किया जाता है जिसे एक एनम के रूप में माना जाता है। यह प्रोग्रामर के लिए कुछ फायदे हैं, उदाहरण के लिए, यह प्रलेखन को आसान बनाता है, सभी "स्थिरांक" को एक ही ऑब्जेक्ट में…। हालाँकि, यह सिर्फ एक कन्वेंशन है कि इस तरह का ऑब्जेक्ट एनम-लाइक है।
यहां मुद्दा यह है कि HTML में केवल टैग का एक सीमित और ज्ञात सेट है। आप एचटीएमएल 5 विनिर्देश को देख सकते हैं और उन तत्वों के नाम को अपने कोड में एक एनम के रूप में डाल सकते हैं, और इसलिए <blink>
आपके प्रोग्राम में एक टैग को चुपके करना अधिक कठिन बना देता है । इस ज्ञान को एक जगह पर एन्कोड करने से बेहतर है कि अपने कोड को विशेष स्ट्रिंग शाब्दिक (या बदतर, जादुई संख्या) के साथ लिटाना।