Symbol.prototype.toString()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

Die toString()-Methode von Symbol-Werten gibt einen String zurück, der diesen Symbolwert repräsentiert.

Probieren Sie es aus

console.log(Symbol("desc").toString());
// Expected output: "Symbol(desc)"

console.log(Symbol.iterator.toString());
// Expected output: "Symbol(Symbol.iterator)

console.log(Symbol.for("foo").toString());
// Expected output: "Symbol(foo)"

// console.log(Symbol('foo') + 'bar');
// Expected output: Error: Can't convert symbol to string

Syntax

js
toString()

Parameter

Keine.

Rückgabewert

Ein String, der den angegebenen Symbolwert darstellt.

Beschreibung

Das Symbol-Objekt überschreibt die toString-Methode von Object; es erbt nicht Object.prototype.toString(). Für Symbol-Werte gibt die toString-Methode einen beschreibenden String in der Form "Symbol(description)" zurück, wobei description die Beschreibung des Symbols ist.

Die toString()-Methode erfordert, dass ihr this-Wert ein Symbol-Primitiv oder ein Wrapper-Objekt ist. Für andere this-Werte wird ein TypeError ausgelöst, ohne zu versuchen, sie zu Symbolwerten zu konvertieren.

Da Symbol über eine [Symbol.toPrimitive]()-Methode verfügt, hat diese Methode stets Vorrang vor toString(), wenn ein Symbol-Objekt in einen String umgewandelt wird. Allerdings gibt Symbol.prototype[Symbol.toPrimitive]() ein Symbol-Primitiv zurück, und Symbol-Primitiven lösen einen TypeError aus, wenn sie implizit in einen String umgewandelt werden. Deshalb wird die toString()-Methode niemals implizit von der Sprache aufgerufen. Um ein Symbol zu stringifizieren, müssen Sie explizit seine toString()-Methode verwenden oder die String()-Funktion nutzen.

Beispiele

Verwendung von toString()

js
Symbol("desc").toString(); // "Symbol(desc)"

// well-known symbols
Symbol.iterator.toString(); // "Symbol(Symbol.iterator)"

// global symbols
Symbol.for("foo").toString(); // "Symbol(foo)"

Implizites Aufrufen von toString()

Die einzige Möglichkeit, JavaScript dazu zu bringen, toString() statt [Symbol.toPrimitive]() für ein Symbol-Wrapper-Objekt implizit aufzurufen, besteht darin, die [Symbol.toPrimitive]()-Methode zuerst zu löschen.

Warnung: Dies sollten Sie in der Praxis nicht tun. Verändern Sie niemals integrierte Objekte, es sei denn, Sie wissen genau, was Sie tun.

js
delete Symbol.prototype[Symbol.toPrimitive];
console.log(`${Object(Symbol("foo"))}`); // "Symbol(foo)"

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-symbol.prototype.tostring

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
toString

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch