Метод Symbol.for(key)
шукає існуючі символи у загальному реєстрі символів за заданим ключем, та повертає, якщо знаходить. Інакше, у глобальному реєстрі символів створюється новий символ з цим ключем.
Синтаксис
Symbol.for(key);
Параметри
key
- Рядок, обов'язковий. Ключ для символа (а також використовується для опису символа).
Повертає
Існуючий символ з наданим ключем, якщо його знайдено; інакше, створюється та повертається новий символ.
Опис
На відміну від Symbol()
, функція Symbol.for()
створює символ, доступний у списку глобального реєстру символів. Symbol.for()
також не обов'язково створює новий символ при кожному виклику, а спочатку перевіряє, чи існує вже символ з наданим ключем key
у реєстрі. В такому випадку повертається цей символ. Якщо символ з наданим ключем не знайдений, Symbol.for()
створить новий глобальний символ.
Глобальний реєстр символів
Глобальний реєстр символів - це список з наступною структурою запису, який ініціалізується порожнім:
Ім'я поля | Значення |
---|---|
[[key]] | Рядковий ключ для ідентифікації символа. |
[[symbol]] | Символ, що зберігається глобально. |
Приклади
Використання Symbol.for()
Symbol.for('foo'); // створити новий глобальний символ
Symbol.for('foo'); // отримати вже створений символ
// Один і той самий глобальний символ, але не локально
Symbol.for('bar') === Symbol.for('bar'); // true
Symbol('bar') === Symbol('bar'); // false
// Ключ також використовується в якості опису
var sym = Symbol.for('mario');
sym.toString(); // "Symbol(mario)"
Щоб уникнути конфліктів між іменами ваших ключів глобальних символів та іншими (код бібліотеки) глобальними символами, може бути гарною ідеєю додавати до ваших символів префікс:
Symbol.for('mdn.foo');
Symbol.for('mdn.bar');
Специфікації
Сумісність з веб-переглядачами
BCD tables only load in the browser