logo

Переліки в JavaScript

Переліки в JavaScript це спосіб визначення набору іменованих констант, які часто використовуються для представлення набору пов’язаних значень. Хоча JavaScript не має вбудованої підтримки переліків, подібних функцій можна досягти за допомогою об’єктів або константних змінних для покращення читабельності коду та зручності обслуговування.

в JavaScript , Enumeration або Enum використовуються для представлення фіксованого набору іменованих значень. Однак Enum не є рідною частиною JavaScript, тому вони зазвичай реалізуються за допомогою об’єктів або заморожених масивів.

Щоб забезпечити незмінність Enum у JavaScript, дотримуйтесь цих вказівок:



Метод Object.freeze():

Один зі способів створити об’єкт, подібний до Enum, — визначити простий об’єкт JavaScript із постійними значеннями властивостей, а потім використовувати Object.freeze() щоб запобігти подальшим змінам. Це забезпечить те, що об’єкт і його властивості неможливо змінити або змінити. Ви можете використовувати Object.freeze() метод для запобігання будь-яким змінам об'єкта. Після того, як об’єкт заморожено, ви не можете додавати, змінювати чи видаляти будь-які його властивості. Ви можете використовувати цей метод для створення незмінного об’єкта, який представлятиме ваш Enum.

Синтаксис:

Object.freeze()>

Метод Object.defineProperty():

Ви можете використовувати метод Object.defineProperty(), щоб визначити властивості, які не можна змінити, додати або видалити. Ви можете використовувати цей метод, щоб створити властивість лише для читання для кожного значення Enum. Ви можете використовувати метод Object.defineProperty(), щоб визначити властивості, які не можна змінити, додати або видалити. Ви можете використовувати цей метод, щоб створити властивість лише для читання для кожного значення Enum.

використання TypeScript : TypeScript — це надмножина JavaScript, яка включає підтримку Enum. Використовуючи TypeScript, ви можете визначити Enum таким чином, щоб гарантувати їх незмінність.

Приклад 1: У цьому прикладі ми створюємо об’єкт Enum під назвою DaysOfWeek за допомогою Object.freeze(). Метод Object.freeze() робить об’єкт незмінним, тому ми не можемо додавати, змінювати чи видаляти властивості об’єкта.

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

Вихід:

0>

Символ ES6:

Іншим підходом до створення Enum у JavaScript є використання символів ES6. Символи — це унікальні ідентифікатори, які не можна дублювати і які можна використовувати для визначення постійних значень, які гарантовано будуть унікальними та незмінними.

приклад: У цьому прикладі ми визначаємо перелік під назвою myEnum за допомогою Object.freeze(), щоб запобігти будь-яким змінам об’єкта. Ми використовуємо Symbol() для створення унікальних символів для кожного значення enum.

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>

Вихід:

Symbol(foo) Symbol(foo) undefined>

Використання закриття:

Ви також можете використовувати закриття для створення Enum. Закриття — це функція, яка має доступ до змінних у зовнішній області видимості функції. Створивши внутрішню функцію, яка повертає значення, ми можемо зробити змінну у зовнішній області видимості функції лише для читання.

приклад: У цьому прикладі ми використовуємо закриття для створення об’єкта під назвою DaysOfWeek. Об’єкт days визначено у зовнішній області видимості функції та недоступний ззовні функції. Внутрішня функція get повертає значення властивості з заданим іменем з об’єкта days. Оскільки об’єкт days недоступний безпосередньо, його не можна змінити поза межами закриття.

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>

Вихід:

0>