logo

Aufzählungen in JavaScript

Aufzählungen in JavaScript sind eine Möglichkeit, eine Reihe benannter Konstanten zu definieren, die häufig zur Darstellung einer Sammlung verwandter Werte verwendet werden. Während JavaScript keine integrierte Unterstützung für Aufzählungen bietet, können ähnliche Funktionen mithilfe von Objekten oder Konstantenvariablen erreicht werden, um die Lesbarkeit und Wartbarkeit des Codes zu verbessern.

In JavaScript , Aufzählungen oder Aufzählungen werden verwendet, um einen festen Satz benannter Werte darzustellen. Allerdings sind Enums nicht nativ in JavaScript enthalten, daher werden sie normalerweise mithilfe von Objekten oder eingefrorenen Arrays implementiert.

Um die Unveränderlichkeit von Enums in JavaScript sicherzustellen, können Sie diese Richtlinien befolgen:



Object.freeze() Methode:

Eine Möglichkeit, ein Enum-ähnliches Objekt zu erstellen, besteht darin, ein einfaches JavaScript-Objekt mit konstanten Eigenschaftswerten zu definieren und dann zu verwenden Object.freeze() um weitere Änderungen zu verhindern. Dadurch wird sichergestellt, dass das Objekt und seine Eigenschaften nicht geändert oder mutiert werden können. Du kannst den ... benutzen Object.freeze() -Methode, um Änderungen am Objekt zu verhindern. Sobald ein Objekt eingefroren ist, können Sie keine seiner Eigenschaften hinzufügen, ändern oder löschen. Mit dieser Methode können Sie ein unveränderliches Objekt erstellen, das Ihre Enum darstellt.

Syntax:

Object.freeze()>

Object.defineProperty() Methode:

Mit der Methode Object.defineProperty() können Sie Eigenschaften definieren, die nicht geändert, hinzugefügt oder gelöscht werden können. Mit dieser Methode können Sie für jeden Enum-Wert eine schreibgeschützte Eigenschaft erstellen. Mit der Methode Object.defineProperty() können Sie Eigenschaften definieren, die nicht geändert, hinzugefügt oder gelöscht werden können. Mit dieser Methode können Sie für jeden Enum-Wert eine schreibgeschützte Eigenschaft erstellen.

Verwenden Typoskript : TypeScript ist eine Obermenge von JavaScript, die Enums unterstützt. Mit TypeScript können Sie Enums so definieren, dass ihre Unveränderlichkeit gewährleistet ist.

Beispiel 1: In diesem Beispiel erstellen wir mit Object.freeze() ein Enum-Objekt namens DaysOfWeek. Die Object.freeze()-Methode macht das Objekt unveränderlich, sodass wir dem Objekt keine Eigenschaften hinzufügen, ändern oder löschen können.

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

Ausgabe:

0>

ES6-Symbol:

Ein weiterer Ansatz zum Erstellen einer Enum in JavaScript ist die Verwendung von ES6-Symbolen. Symbole sind eindeutige Bezeichner, die nicht dupliziert werden können und zur Definition konstanter Werte verwendet werden können, die garantiert eindeutig und unveränderlich sind.

Beispiel: In diesem Beispiel definieren wir mithilfe von Object.freeze() eine Enumeration namens „myEnum“, um jegliche Änderungen am Objekt zu verhindern. Wir verwenden Symbol(), um für jeden Enum-Wert eindeutige Symbole zu erstellen.

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>

Ausgabe:

Symbol(foo) Symbol(foo) undefined>

Verwenden eines Verschlusses:

Sie können auch einen Abschluss verwenden, um eine Aufzählung zu erstellen. Ein Abschluss ist eine Funktion, die Zugriff auf Variablen in ihrem äußeren Funktionsumfang hat. Indem wir eine innere Funktion erstellen, die einen Wert zurückgibt, können wir die Variable im äußeren Funktionsbereich schreibgeschützt machen.

Beispiel: In diesem Beispiel verwenden wir einen Abschluss, um ein Objekt namens DaysOfWeek zu erstellen. Das Tagesobjekt ist im äußeren Funktionsumfang definiert und von außerhalb der Funktion nicht zugänglich. Die innere Funktion get gibt den Wert der Eigenschaft mit dem angegebenen Namen aus dem Days-Objekt zurück. Da auf das Tagesobjekt nicht direkt zugegriffen werden kann, kann es nicht von außerhalb des Abschlusses geändert werden.

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>

Ausgabe:

0>