`Symbol.prototype.description`
· Eine Minute Lesezeit
JavaScript-Symbol
s können bei ihrer Erstellung eine Beschreibung erhalten:
const symbol = Symbol('foo');
// ^^^^^
Bisher war die einzige Möglichkeit, programmgesteuert auf diese Beschreibung zuzugreifen, indirekt über Symbol.prototype.toString()
:
const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'
Der Code wirkt jedoch etwas magisch, ist nicht sehr selbsterklärend und verletzt das Prinzip „Absicht ausdrücken, nicht Implementierung“. Die obige Technik erlaubt es außerdem nicht, zwischen einem Symbol ohne Beschreibung (d.h. Symbol()
) und einem Symbol mit leerem String als Beschreibung (d.h. Symbol('')
) zu unterscheiden.
Der neue Getter Symbol.prototype.description
bietet eine ergonomischere Möglichkeit, auf die Beschreibung eines Symbol
s zuzugreifen:
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
Bei Symbol
s ohne Beschreibung gibt der Getter undefined
zurück:
const symbol = Symbol();
symbol.description;
// → undefined