Oppslag i JavaScript er en måte å definere et sett med navngitte konstanter, ofte brukt til å representere en samling av relaterte verdier. Selv om JavaScript ikke har innebygd støtte for enums, kan lignende funksjonalitet oppnås ved å bruke objekter eller const-variabler for å forbedre kodelesbarhet og vedlikehold.
I JavaScript , Enumerations eller Enums brukes til å representere et fast sett med navngitte verdier. Enums er imidlertid ikke innfødt til JavaScript, så de implementeres vanligvis ved hjelp av objekter eller frosne matriser.
For å sikre uforanderligheten til Enums i JavaScript, kan du følge disse retningslinjene:
Object.freeze() Metode:
En måte å lage et Enum-lignende objekt på er ved å definere et vanlig JavaScript-objekt med konstante egenskapsverdier, og deretter bruke Object.freeze() for å forhindre ytterligere endringer. Dette vil sikre at objektet og dets egenskaper ikke kan endres eller muteres. Du kan bruke Object.freeze() metode for å forhindre endringer i objektet. Når et objekt er frosset, kan du ikke legge til, endre eller slette noen av dets egenskaper. Du kan bruke denne metoden til å lage et uforanderlig objekt som representerer din Enum.
Syntaks:
Object.freeze()>
Object.defineProperty() Metode:
Du kan bruke Object.defineProperty()-metoden til å definere egenskaper som ikke kan endres, legges til eller slettes. Du kan bruke denne metoden til å opprette en skrivebeskyttet egenskap for hver Enum-verdi. Du kan bruke Object.defineProperty()-metoden til å definere egenskaper som ikke kan endres, legges til eller slettes. Du kan bruke denne metoden til å opprette en skrivebeskyttet egenskap for hver Enum-verdi.
Bruk TypeScript : TypeScript er et supersett av JavaScript som inkluderer støtte for Enums. Ved å bruke TypeScript kan du definere Enums på en måte som garanterer deres uforanderlighet.
Eksempel 1: I dette eksemplet lager vi et Enum-objekt kalt DaysOfWeek ved å bruke Object.freeze(). Object.freeze()-metoden gjør objektet uforanderlig, så vi kan ikke legge til, endre eller slette egenskaper fra objektet.
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);> Produksjon:
0>
ES6-symbol:
En annen tilnærming til å lage en Enum i JavaScript er å bruke ES6-symboler. Symboler er unike identifikatorer som ikke kan dupliseres og kan brukes til å definere konstante verdier som garantert er unike og uforanderlige.
Eksempel: I dette eksemplet definerer vi en enum kalt myEnum ved å bruke Object.freeze() for å forhindre endringer i objektet. Vi bruker Symbol() for å lage unike symboler for hver enum-verdi.
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> Produksjon:
Symbol(foo) Symbol(foo) undefined>
Bruke en lukking:
Du kan også bruke en lukking for å lage en Enum. En lukking er en funksjon som har tilgang til variabler i sitt ytre funksjonsomfang. Ved å lage en indre funksjon som returnerer en verdi, kan vi gjøre variabelen i den ytre funksjonsomfanget skrivebeskyttet.
Eksempel: I dette eksemplet bruker vi en lukking for å lage et objekt kalt DaysOfWeek. Dagsobjektet er definert i det ytre funksjonsomfanget og er ikke tilgjengelig fra utenfor funksjonen. Den indre funksjonen get returnerer verdien av egenskapen med det gitte navnet fra days-objektet. Siden dagsobjektet ikke er direkte tilgjengelig, kan det ikke endres fra utenfor stengingen.
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> Produksjon:
0>