Zum Hauptinhalt springen

`Symbol.prototype.description`

· Eine Minute Lesezeit
Mathias Bynens ([@mathias](https://twitter.com/mathias))

JavaScript-Symbols 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 Symbols zuzugreifen:

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

Bei Symbols ohne Beschreibung gibt der Getter undefined zurück:

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

Unterstützung für Symbol.prototype.description