Le symbole connu Symbol.toStringTag
est une propriété qui est une chaîne de caractères qui est utilisée pour la description textuelle par défaut d'un objet. Ce symbole est utilisé par le moteur JavaScript via la méthode Object.prototype.toString()
.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Attributs de Symbol.toStringTag |
|
---|---|
Écrivable | Non |
Énumérable | Non |
Configurable | Non |
Description
La plupart des types JavaScript ont des étiquettes par défaut :
Object.prototype.toString.call('toto'); // "[object String]"
Object.prototype.toString.call([1, 2]); // "[object Array]"
Object.prototype.toString.call(3); // "[object Number]"
Object.prototype.toString.call(true); // "[object Boolean]"
Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
// etc.
D'autres ont le symbole natif toStringTag
défini :
Object.prototype.toString.call(new Map()); // "[object Map]"
Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]"
Object.prototype.toString.call(Promise.resolve()); // "[object Promise]"
// etc.
Lorsqu'on crée des classes personnalisées, JavaScript utilise l'étiquette "Object" par défaut :
class ValidatorClass {}
Object.prototype.toString.call(new ValidatorClass()); // "[object Object]"
Si on utilise le symbole toStringTag
on peut définir une étiquette personnalisée :
class ValidatorClass {
get [Symbol.toStringTag]() {
return "Validator";
}
}
Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]"
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Symbol.toStringTag' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript (ECMA-262) La définition de 'Symbol.toStringTag' dans cette spécification. |
Standard évolutif |
Compatibilité des navigateurs
BCD tables only load in the browser