Symbol.for()

Метод 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');

Специфікації

Специфікація
ECMAScript (ECMA-262)
The definition of 'Symbol.for' in that specification.

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також