logo

Opsommingen in JavaScript

Opsommingen in JavaScript zijn een manier om een ​​reeks benoemde constanten te definiëren, vaak gebruikt om een ​​verzameling gerelateerde waarden weer te geven. Hoewel JavaScript geen ingebouwde ondersteuning voor enums heeft, kan vergelijkbare functionaliteit worden bereikt met behulp van objecten of const-variabelen om de leesbaarheid en onderhoudbaarheid van de code te verbeteren.

In JavaScript , Opsommingen of opsommingen worden gebruikt om een ​​vaste set benoemde waarden weer te geven. Enums zijn echter niet eigen aan JavaScript, dus worden ze meestal geïmplementeerd met behulp van objecten of bevroren arrays.

Om de onveranderlijkheid van Enums in JavaScript te garanderen, kunt u deze richtlijnen volgen:



Object.freeze() Methode:

Eén manier om een ​​Enum-achtig object te maken is door een eenvoudig JavaScript-object met constante eigenschapswaarden te definiëren en vervolgens Object.freeze() om verdere wijzigingen te voorkomen. Dit zorgt ervoor dat het object en zijn eigenschappen niet kunnen worden gewijzigd of gemuteerd. U kunt gebruik maken van de Object.freeze() methode om eventuele wijzigingen aan het object te voorkomen. Zodra een object is bevroren, kunt u geen eigenschappen meer toevoegen, wijzigen of verwijderen. U kunt deze methode gebruiken om een ​​onveranderlijk object te maken dat uw Enum vertegenwoordigt.

Syntaxis:

Object.freeze()>

Object.defineProperty() Methode:

U kunt de methode Object.defineProperty() gebruiken om eigenschappen te definiëren die niet kunnen worden gewijzigd, toegevoegd of verwijderd. U kunt deze methode gebruiken om voor elke Enum-waarde een alleen-lezen eigenschap te maken. U kunt de methode Object.defineProperty() gebruiken om eigenschappen te definiëren die niet kunnen worden gewijzigd, toegevoegd of verwijderd. U kunt deze methode gebruiken om voor elke Enum-waarde een alleen-lezen eigenschap te maken.

Gebruik Typescript : TypeScript is een superset van JavaScript die ondersteuning biedt voor Enums. Met TypeScript kunt u Enums definiëren op een manier die hun onveranderlijkheid garandeert.

Voorbeeld 1: In dit voorbeeld maken we een Enum-object met de naam DaysOfWeek met behulp van Object.freeze(). De methode Object.freeze() maakt het object onveranderlijk, dus we kunnen geen eigenschappen van het object toevoegen, wijzigen of verwijderen.

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

Uitgang:

0>

ES6-symbool:

Een andere benadering voor het maken van een Enum in JavaScript is het gebruik van ES6-symbolen. Symbolen zijn unieke identificatiegegevens die niet kunnen worden gedupliceerd en die kunnen worden gebruikt om constante waarden te definiëren die gegarandeerd uniek en onveranderlijk zijn.

Voorbeeld: In dit voorbeeld definiëren we een enum met de naam myEnum met behulp van Object.freeze() om eventuele wijzigingen aan het object te voorkomen. We gebruiken Symbol() om unieke symbolen te maken voor elke enumwaarde.

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>

Uitgang:

Symbol(foo) Symbol(foo) undefined>

Een sluiting gebruiken:

Je kunt ook een afsluiting gebruiken om een ​​Enum te maken. Een afsluiting is een functie die toegang heeft tot variabelen in zijn buitenste functiebereik. Door een innerlijke functie te maken die een waarde retourneert, kunnen we de variabele in het buitenste functiebereik alleen-lezen maken.

Voorbeeld: In dit voorbeeld gebruiken we een afsluiting om een ​​object te maken met de naam DaysOfWeek. Het object dagen wordt gedefinieerd in het buitenste functiebereik en is niet toegankelijk van buiten de functie. De innerlijke functie get retourneert de waarde van de eigenschap met de opgegeven naam uit het object days. Omdat het object dagen niet direct toegankelijk is, kan het buiten de sluiting niet worden gewijzigd.

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>

Uitgang:

0>