Symbol.for()
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.
Статический метод Symbol.for() ищет существующие символы в реестре символов, охватывающем всю среду выполнения, по заданному ключу и возвращает его, если он найден. В противном случае будет создан новый символ с этим ключом в глобальном реестре символов.
Попробуйте
console.log(Symbol.for("bar") === Symbol.for("bar"));
// Expected output: true
console.log(Symbol("bar") === Symbol("bar"));
// Expected output: false
const symbol1 = Symbol.for("foo");
console.log(symbol1.toString());
// Expected output: "Symbol(foo)"
Синтаксис
Symbol.for(key)
Параметры
-
key - Строка, обязательно. Ключ для символа (также используется для описания символа).
Возвращаемое значение
Существующий символ с заданным ключом, если он найден; в противном случае будет создан и возвращен новый символ.
Описание
В отличие от Symbol(), функция Symbol.for() создает символ, доступный в глобальном реестре символов. Symbol.for() также не обязательно создает новый символ при каждом вызове, а сначала проверяет, присутствует ли символ с заданным key в реестре. В этом случае возвращается этот символ. Если символ с заданным ключом не найден, Symbol.for() создаст новый глобальный символ.
Примеры
Использование Symbol.for()
Symbol.for("foo"); // create a new global symbol
Symbol.for("foo"); // retrieve the already created symbol
// Same global symbol, but not locally
Symbol.for("bar") === Symbol.for("bar"); // true
Symbol("bar") === Symbol("bar"); // false
// The key is also used as the description
const sym = Symbol.for("mario");
sym.toString(); // "Symbol(mario)"
Чтобы избежать конфликтов имен между вашими глобальными ключами символов и другими глобальными символами (из библиотечного кода), может быть хорошей идеей добавлять префикс к вашим символам:
Symbol.for("mdn.foo");
Symbol.for("mdn.bar");
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
for |
40 |
12 |
36 |
27 |
9 |
40 |
36 |
27 |
9 |
4.0 |
40 |
9 |
1.0.0 |
1.0 |
0.12.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for