logo

Enums JavaScript

Enums JavaScript yra būdas apibrėžti įvardytų konstantų rinkinį, dažnai naudojamą susijusių reikšmių rinkiniui atstovauti. Nors „JavaScript“ nėra integruoto enums palaikymo, panašias funkcijas galima pasiekti naudojant objektus arba const kintamuosius, kad būtų pagerintas kodo skaitomumas ir priežiūra.

gigabaitas vs megabaitas

Į JavaScript , Enumerations arba Enums naudojami fiksuotam įvardytų reikšmių rinkiniui pavaizduoti. Tačiau „Enums“ nėra gimtoji „JavaScript“, todėl dažniausiai jie įgyvendinami naudojant objektus arba užšaldytus masyvus.

Norėdami užtikrinti „Enums“ nekintamumą „JavaScript“, galite vadovautis šiomis gairėmis:



Object.freeze() metodas:

Vienas iš būdų sukurti į Enum panašų objektą yra apibrėžti paprastą JavaScript objektą su pastoviomis ypatybių reikšmėmis ir tada naudoti Object.freeze() kad būtų išvengta tolesnių pakeitimų. Taip bus užtikrinta, kad objektas ir jo savybės nebus keičiami ar mutuojami. Galite naudoti Object.freeze() būdas išvengti bet kokių objekto pakeitimų. Kai objektas yra užšaldytas, negalite pridėti, keisti ar ištrinti jokių jo savybių. Šį metodą galite naudoti norėdami sukurti nekintamą objektą, kuris atstovauja jūsų Enum.

Sintaksė:

Object.freeze()>

Object.defineProperty() metodas:

Galite naudoti Object.defineProperty() metodą, norėdami apibrėžti ypatybes, kurių negalima keisti, pridėti ar ištrinti. Galite naudoti šį metodą, kad sukurtumėte tik skaitymo ypatybę kiekvienai Enum vertei. Galite naudoti Object.defineProperty() metodą, norėdami apibrėžti ypatybes, kurių negalima keisti, pridėti ar ištrinti. Galite naudoti šį metodą, kad sukurtumėte tik skaitymo ypatybę kiekvienai Enum vertei.

Naudokite TypeScript : „TypeScript“ yra „JavaScript“ superrinkinys, apimantis „Enums“ palaikymą. Naudodami TypeScript galite apibrėžti enumus taip, kad būtų užtikrintas jų nekintamumas.

1 pavyzdys: Šiame pavyzdyje mes sukuriame Enum objektą pavadinimu DaysOfWeek naudodami Object.freeze(). Metodas Object.freeze() daro objektą nekintamą, todėl negalime pridėti, keisti ar ištrinti objekto savybių.

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);>

Išvestis:

0>

ES6 simbolis:

Kitas būdas sukurti Enum JavaScript yra naudoti ES6 simbolius. Simboliai yra unikalūs identifikatoriai, kurių negalima pasikartoti ir kuriuos galima naudoti norint apibrėžti pastovias reikšmes, kurios garantuotai yra unikalios ir nekintančios.

Pavyzdys: Šiame pavyzdyje mes apibrėžiame sąrašą, vadinamą myEnum, naudodami Object.freeze(), kad išvengtume bet kokių objekto pakeitimų. Mes naudojame simbolį () norėdami sukurti unikalius simbolius kiekvienai sąrašo reikšmei.

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>

Išvestis:

Symbol(foo) Symbol(foo) undefined>

Uždarymo naudojimas:

Norėdami sukurti Enum, taip pat galite naudoti uždarymą. Uždarymas yra funkcija, turinti prieigą prie išorinės funkcijos apimties kintamųjų. Sukūrę vidinę funkciją, kuri grąžina reikšmę, išorinės funkcijos apimties kintamąjį galime padaryti tik skaitymą.

Pavyzdys: Šiame pavyzdyje mes naudojame uždarymą, kad sukurtume objektą pavadinimu DaysOfWeek. Dienų objektas yra apibrėžtas išorinėje funkcijos srityje ir nėra pasiekiamas iš funkcijos ribų. Vidinė funkcija gauti grąžina nuosavybės vertę su nurodytu pavadinimu iš dienų objekto. Kadangi dienų objektas nėra tiesiogiai pasiekiamas, jo negalima keisti iš išorės.

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>

Išvestis:

0>