Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.
Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Метод 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' в этой спецификации. |
Стандарт | Изначальное определение. |
Поддержка браузерами
Возможность | 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) | Нет | Нет | Нет |