We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Метод Symbol.for(key) ищет ранее созданный разделяемый символ по заданному ключу и возвращает его, если он найден. В противном случае создается новый разделяемый символ для данного ключа в глобальном реестре символов.

Синтаксис

Symbol.for(key);

Параметры

key
Строка, обязательный. Идентификатор символа (также используется в качестве описания символа).

Описание

В противоположность вызову Symbol(), функция Symbol.for() создаёт символ, доступный в глобальном списке реестра символов. Symbol.for() не создаёт новый символ при каждом вызове, вместо этого, метод сначала проверяет, существует ли символ с заданным идентификатором в реестре — и возвращает его, если тот присутствует. Если символ с заданным ключом не найден, Symbol.for() создаст новый глобальный символ.

Глобальный реестр

Глобальный реестр символов — это список со следующей структурой записей и пустой при инициализации:

Элемент глобального реестра символов
Поле Значение
[[key]] Строка, используемая в качестве идентификатора.
[[symbol]] Символ, хранящийся глобально.

Примеры

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 2015 (6th Edition, ECMA-262)
Определение 'Symbol.for' в этой спецификации.
Стандарт Изначальное определение.

Поддержка браузерами

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка 40 36.0 (36.0) Нет Нет Нет
Возможность Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка Нет Нет 36.0 (36.0) Нет Нет Нет

См. также

Метки документа и участники

Внесли вклад в эту страницу: SphinxKnight, neutral
Обновлялась последний раз: SphinxKnight,