`Symbol.prototype.description`
· Lectura de un minuto
Los Symbol
s de JavaScript pueden tener una descripción al momento de su creación:
const symbol = Symbol('foo');
// ^^^^^
Anteriormente, la única forma de acceder a esta descripción programáticamente era indirectamente a través de Symbol.prototype.toString()
:
const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'
Sin embargo, el código es un tanto mágico, no muy autoexplicativo, y viola el principio de “expresar intención, no implementación”. La técnica mencionada tampoco permite distinguir entre un símbolo sin descripción (es decir, Symbol()
) y un símbolo cuya descripción es la cadena vacía (es decir, Symbol('')
).
El nuevo getter Symbol.prototype.description
proporciona una forma más ergonómica de acceder a la descripción de un Symbol
:
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
Para Symbol
s sin una descripción, el getter devuelve undefined
:
const symbol = Symbol();
symbol.description;
// → undefined