Enumeració en JavaScript són una manera de definir un conjunt de constants anomenades, sovint s'utilitzen per representar una col·lecció de valors relacionats. Tot i que JavaScript no té suport integrat per a enumeracions, es pot aconseguir una funcionalitat similar utilitzant objectes o variables const per millorar la llegibilitat i el manteniment del codi.
En JavaScript , Enumeracions o Enumeracions s'utilitzen per representar un conjunt fix de valors amb nom. Tanmateix, les enumeracions no són natives de JavaScript, de manera que s'implementen normalment mitjançant objectes o matrius congelades.
Per garantir la immutabilitat de les enumeracions a JavaScript, podeu seguir aquestes directrius:
Object.freeze() Mètode:
Una manera de crear un objecte semblant a Enum és definint un objecte JavaScript senzill amb valors de propietat constants i després utilitzar-lo Object.freeze() per evitar qualsevol modificació posterior. Això garantirà que l'objecte i les seves propietats no es puguin canviar ni mutar. Podeu utilitzar el Object.freeze() mètode per evitar qualsevol canvi a l'objecte. Un cop congelat un objecte, no podeu afegir, modificar ni eliminar cap de les seves propietats. Podeu utilitzar aquest mètode per crear un objecte immutable que representi la vostra Enum.
Sintaxi:
Object.freeze()>
Object.defineProperty() Mètode:
Podeu utilitzar el mètode Object.defineProperty() per definir propietats que no es poden canviar, afegir o suprimir. Podeu utilitzar aquest mètode per crear una propietat de només lectura per a cada valor Enum. Podeu utilitzar el mètode Object.defineProperty() per definir propietats que no es poden canviar, afegir o suprimir. Podeu utilitzar aquest mètode per crear una propietat de només lectura per a cada valor Enum.
Ús TypeScript : TypeScript és un superconjunt de JavaScript que inclou suport per a Enums. Amb TypeScript, podeu definir enumeracions d'una manera que garanteixi la seva immutabilitat.
cadena a int
Exemple 1: En aquest exemple, creem un objecte Enum anomenat DaysOfWeek mitjançant Object.freeze(). El mètode Object.freeze() fa que l'objecte sigui immutable, de manera que no podem afegir, modificar o eliminar propietats de l'objecte.
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);> Sortida:
0>
Símbol ES6:
Un altre enfocament per crear una enumeració en JavaScript és utilitzar els símbols ES6. Els símbols són identificadors únics que no es poden duplicar i es poden utilitzar per definir valors constants que es garanteix que són únics i inalterables.
mysql mostra usuaris
Exemple: En aquest exemple, estem definint una enumeració anomenada myEnum utilitzant Object.freeze() per evitar qualsevol modificació a l'objecte. Estem utilitzant Symbol() per crear símbols únics per a cada valor enumeració.
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> Sortida:
Symbol(foo) Symbol(foo) undefined>
Ús d'un tancament:
També podeu utilitzar un tancament per crear una enumeració. Un tancament és una funció que té accés a variables del seu àmbit de funció exterior. En crear una funció interna que retorni un valor, podem fer que la variable de l'àmbit de la funció exterior sigui només de lectura.
Exemple: En aquest exemple, utilitzem un tancament per crear un objecte anomenat DaysOfWeek. L'objecte dies es defineix a l'àmbit de la funció exterior i no és accessible des de fora de la funció. La funció interna get retorna el valor de la propietat amb el nom donat de l'objecte days. Com que l'objecte dies no és directament accessible, no es pot modificar des de fora del tancament.
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> Sortida:
0>