logo

Oppslag i JavaScript

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>