JavaScript Symbol.for() — символ із глобального реєстру


Метод Symbol.for() бере символ із глобального реєстру — і для того самого ключа завжди повертає той самий символ.

автор: NagarD

Загальний опис

Це прямо протилежно звичайному Symbol(), який щоразу створює новий, унікальний символ. Два виклики Symbol('id') дають два різні символи; два виклики Symbol.for('id') — один і той самий.

Навіщо це? Щоб різні частини коду могли домовитись про ключ, не передаючи посилання одна одній. Дві бібліотеки, два iframe, скрипт і його розширення — усі, хто знає рядок 'app.id', отримають один символ.

Реєстр глобальний на всю сторінку, тож ключі варто робити довгими й унікальними — як імена пакетів.

автор: NagarD

Порада

Ключ у реєстрі — глобальний. Пиши Symbol.for('css-in-ua.state'), а не Symbol.for('state'), щоб не зіткнутись із чужою бібліотекою.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
for 38+ 36+ 9+ 25+ 12+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
for 38+ yes yes 9+

Приклади

+ запропонувати свій приклад у пісочниці

Той самий символ у двох незалежних місцях коду.

// звичайний Symbol — щоразу НОВИЙ
console.log(Symbol('id') === Symbol('id')); // false

// а з реєстру — ТОЙ САМИЙ
console.log(Symbol.for('app.id') === Symbol.for('app.id')); // true

// бібліотека A
const key = Symbol.for('css-in-ua.state');
window.widget = { [key]: { open: true } };

// бібліотека B — без жодного спільного коду
const sameKey = Symbol.for('css-in-ua.state');
console.log(window.widget[sameKey]); // { open: true }
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід