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 :

Structure d'un enregistrement dans le registre global des symboles
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 Latest Draft (ECMA-262)
La définition de 'Symbol.for' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 40Edge Support complet OuiFirefox Support complet 36IE Aucun support NonOpera Support complet OuiSafari Support complet 9WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 36Opera Android Support complet OuiSafari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet Oui

Légende

Support complet  
Support complet
Aucun support  
Aucun support

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,