JavaScript·100 питань

[ITEM 2] QUESTION: Що таке Symbol?

Відповідь

Тип даних Symbol у JavaScript є унікальним і незмінним примітивним типом даних, який був запроваджений у стандарт ES6 для вирішення завдання створення прихованих і унікальних ідентифікаторів властивостей об'єктів.

Головна особливість символів полягає в тому, що навіть якщо два символи створені з абсолютно однаковим описом або взагалі без нього, вони все одно суворо не рівні між собою. Наприклад, виклик Symbol('desc') завжди повертатиме унікальне значення, і умова Symbol('desc') !== Symbol('desc') завжди поверне істину.

На практиці символи найчастіше використовуються для створення унікальних ключів властивостей об'єктів, які не конфліктуватимуть з іншими властивостями. Це особливо корисно під час розробки бібліотек або додавання метаданих, прихованих від стандартних циклів перебору на зразок for...in.

Для ситуацій, коли необхідно використовувати той самий символ у різних частинах додатка, існує глобальний реєстр символів. Доступ до нього здійснюється через спеціальні методи роботи з глобальним простором імен:

Symbol.for(key) для створення або отримання символу за рядковим ключем
Symbol.keyFor(symbol) для зворотного пошуку рядкового ключа за символом

Крім того, у JavaScript існує набір так званих добре відомих символів (well-known symbols), які вбудовані в мову і дозволяють розробникам змінювати поведінку вбудованих механізмів об'єктів.

Яскравим прикладом такого символу є Symbol.iterator, який визначає ітератор за замовчуванням для об'єкта. Реалізувавши цей метод, розробник отримує можливість використовувати свій власний об'єкт у циклі for...of.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем