Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2015.
Le constructeur Symbol() renvoie une valeur de type symbol. Ce n'est pas à proprement parler un constructeur, car il n'accepte pas la syntaxe new Symbol() et qu'il n'est pas prévu pour créer des sous-classes. On pourra l'utiliser comme valeur pour la clause extends d'une définition de classe, mais on ne pourra pas l'utiliser avec un appel super, cela entraînera une exception.
Une chaîne de caractères qui décrit le symbole. Elle peut être utilisée pour le débogage mais ne permet pas d'accéder au symbole lui-même.
Pour créer un nouveau symbole primitif, on écrit Symbol() en fournissant éventuellement une chaîne de caractères comme description :
Dans le code précédent, on crée trois nouveaux symboles. On notera que Symbol("toto") ne convertit pas la chaîne de caractères "toto" en un symbole. C'est bien un nouveau symbole qui est créé chaque fois :
La syntaxe qui suit, utilisant l'opérateur new, déclenchera une exception TypeError :
Cela permet d'éviter aux développeuses et développeurs de créer un objet enveloppant une valeur symbole primitive plutôt qu'un nouveau symbole. Ce comportement se distingue des autres types de données primitifs pour lesquels c'est possible (par exemple new Boolean(), new String() et new Number()).
Si on souhaite vraiment envelopper un symbole dans une valeur objet, il faudra utiliser la fonction Object() :
| ECMAScript® 2027 Language Specification # sec-symbol-constructor |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 17 févr. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.