Aller au contenu principal

`Symbol.prototype.description`

· Une minute de lecture
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Les Symbol en JavaScript peuvent recevoir une description lors de leur création :

const symbol = Symbol('foo');
// ^^^^^

Auparavant, la seule façon d'accéder à cette description par programme était de manière indirecte via Symbol.prototype.toString() :

const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'

Cependant, ce code semble légèrement magique, pas très explicite, et viole le principe « exprimer l'intention, non l'implémentation ». Cette technique ne permet pas non plus de faire la distinction entre un symbole sans description (c'est-à-dire Symbol()) et un symbole dont la description est une chaîne vide (c'est-à-dire Symbol('')).

Le nouveau getter Symbol.prototype.description offre un moyen plus ergonomique d'accéder à la description d'un Symbol :

const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'

Pour les Symbol sans description, le getter retourne undefined :

const symbol = Symbol();
symbol.description;
// → undefined

Support de Symbol.prototype.description