Enumări în JavaScript sunt o modalitate de a defini un set de constante numite, adesea folosite pentru a reprezenta o colecție de valori înrudite. Deși JavaScript nu are suport încorporat pentru enumerari, o funcționalitate similară poate fi obținută folosind obiecte sau variabile const pentru a îmbunătăți lizibilitatea și mentenabilitatea codului.
În JavaScript , Enumerări sau Enumări sunt folosite pentru a reprezenta un set fix de valori numite. Cu toate acestea, Enum-urile nu sunt native pentru JavaScript, așa că sunt de obicei implementate folosind obiecte sau matrice înghețate.
Pentru a asigura imuabilitatea Enum-urilor în JavaScript, puteți urma aceste instrucțiuni:
Object.freeze() Metoda:
O modalitate de a crea un obiect asemănător Enum este definirea unui obiect JavaScript simplu cu valori constante ale proprietăților și apoi utilizarea Object.freeze() pentru a preveni orice modificare ulterioară. Acest lucru va asigura că obiectul și proprietățile sale nu pot fi modificate sau mutate. Puteți folosi Object.freeze() metoda pentru a preveni orice modificare a obiectului. Odată ce un obiect este înghețat, nu puteți adăuga, modifica sau șterge niciuna dintre proprietățile acestuia. Puteți folosi această metodă pentru a crea un obiect imuabil care vă reprezintă Enum.
Sintaxă:
Object.freeze()>
Metoda Object.defineProperty():
Puteți utiliza metoda Object.defineProperty() pentru a defini proprietăți care nu pot fi modificate, adăugate sau șterse. Puteți utiliza această metodă pentru a crea o proprietate numai în citire pentru fiecare valoare Enum. Puteți utiliza metoda Object.defineProperty() pentru a defini proprietăți care nu pot fi modificate, adăugate sau șterse. Puteți utiliza această metodă pentru a crea o proprietate numai în citire pentru fiecare valoare Enum.
Utilizare TypeScript : TypeScript este un superset de JavaScript care include suport pentru Enums. Folosind TypeScript, puteți defini Enum-urile într-un mod care să le garanteze imuabilitatea.
Exemplul 1: În acest exemplu, creăm un obiect Enum numit DaysOfWeek folosind Object.freeze(). Metoda Object.freeze() face obiectul imuabil, astfel încât nu putem adăuga, modifica sau șterge proprietăți din obiect.
Javascript const DaysOfWeek = Object.freeze({ SUNDAY: 0, MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6 }); // Try to modify the enum // This will not change the Sunday variable DaysOfWeek.SUNDAY = 7; console.log(DaysOfWeek.SUNDAY);> Ieșire:
0>
Simbol ES6:
O altă abordare a creării unei Enum în JavaScript este utilizarea simbolurilor ES6. Simbolurile sunt identificatori unici care nu pot fi duplicați și pot fi utilizate pentru a defini valori constante care sunt garantate a fi unice și neschimbate.
Exemplu: În acest exemplu, definim o enumerare numită myEnum folosind Object.freeze() pentru a preveni orice modificare a obiectului. Folosim Symbol() pentru a crea simboluri unice pentru fiecare valoare de enumerare.
Javascript const myEnum = Object.freeze({ FOO: Symbol('foo'), BAR: Symbol('bar'), BAZ: Symbol('baz') }); console.log(myEnum.FOO); // Symbol(foo) // Attempting to modify the enum // values will have no effect myEnum.FOO = Symbol('newFoo'); console.log(myEnum.FOO); // Symbol(foo) // Adding a new property to the enum // object will also have no effect myEnum.QUX = Symbol('qux'); console.log(myEnum.QUX); // undefined> Ieșire:
Symbol(foo) Symbol(foo) undefined>
Folosind o închidere:
De asemenea, puteți utiliza o închidere pentru a crea o Enum. O închidere este o funcție care are acces la variabile din domeniul său extern al funcției. Prin crearea unei funcții interioare care returnează o valoare, putem face ca variabila din domeniul exterior al funcției să fie doar în citire.
Exemplu: În acest exemplu, folosim o închidere pentru a crea un obiect numit DaysOfWeek. Obiectul zile este definit în domeniul exterior al funcției și nu este accesibil din afara funcției. Funcția internă get returnează valoarea proprietății cu numele dat din obiectul zile. Deoarece obiectul zile nu este direct accesibil, nu poate fi modificat din afara inchiderii.
Javascript const DaysOfWeek = (function () { const days = { SUNDAY: 0, MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6 }; return { get: function (name) { return days[name]; } }; })(); // Try to modify the enum // This will not have any effect DaysOfWeek.SUNDAY = 7; console.log(DaysOfWeek.get('SUNDAY')); // Output: 0> Ieșire:
0>