La méthode Symbol.for(clé)
permet de chercher parmi les symboles existants enregistrés dans le registre global de l'environnement d'exécution. Si un symbole associé à la clé donnée existe, il est renvoyé par la fonction, sinon un nouveau symbole associé à cette clé est créé dans le registre.
Syntaxe
Symbol.for(clé);
Paramètres
- clé
- Une chaîne de caractères, obligatoire. La clé correspondant au symbole (également utilisée pour la description du symbole).
Valeur de retour
Un symbole existant s'il en a été trouvé un avec la clé fournie. Sinon, un nouveau symbole est créé puis renvoyé par la méthode.
Description
À la différence de Symbol()
, la méthode Symbol.for()
crée un symbole enregistré dans le registre global. Symbol.for()
ne crée pas nécessairement un nouveau symbole pour chaque appel, elle vérifie d'abord si un symbole avec la clé
donnée est d'ores et déjà présent dans le registre. Si c'est le cas, le symbole correspondant est renvoyé, sinon Symbol.for()
crée un nouveau symbol global.
Registre global pour les symboles
Le registre global des symboles est une liste, initialement vide, dont les éléments ont la structure suivante :
Nom du champ | Valeur |
---|---|
[[key]] | Une chaîne de caractères représentant la clé pour identifier un symbole en particulier. |
[[symbol]] | Un symbole enregistré de façon globale. |
Exemple
Symbol.for("toto"); // crée un nouveau symbole global Symbol.for("toto"); // renvoie le symbole déjà existant // Globalement on a un symbole par clé, localement non Symbol.for("machin") === Symbol.for("machin"); // true Symbol("machin") === Symbol("machin"); // false // La clé sert également de description var sym = Symbol.for("mario"); sym.toString(); // "Symbol(mario)"
Afin d'éviter des conflits entre les clés des symboles globaux liés à votre application et les autres symboles potentiels (bibliothèques externes, etc...), il peut être judicieux de les préfixer :
Symbol.for("mdn.toto"); Symbol.for("mdn.machin");
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Symbol.for' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Symbol.for' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | 40 | 36.0 (36.0) | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | 36.0 (36.0) | Pas de support | Pas de support | Pas de support |