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 eine Zeichenkette zurück, die 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

Eine Zeichenkette, die den angegebenen Symbolwert repräsentiert.

Beschreibung

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

Die Methode toString() erfordert, dass ihr this-Wert ein Symbol-Primärwert oder Wrapper-Objekt ist. Sie wirft einen TypeError, wenn andere this-Werte verwendet werden, ohne zu versuchen, diese in Symbolwerte zu konvertieren.

Da Symbol eine [Symbol.toPrimitive]()-Methode hat, hat diese Methode immer Vorrang vor toString(), wenn ein Symbol-Objekt in eine Zeichenkette umgewandelt wird. Da jedoch Symbol.prototype[Symbol.toPrimitive]() einen Symbol-Primärwert zurückgibt und Symbol-Primärwerte einen TypeError werfen, wenn sie implizit in eine Zeichenkette konvertiert werden, wird die toString()-Methode nie implizit durch die Sprache aufgerufen. Um ein Symbol in eine Zeichenkette umzuwandeln, müssen Sie explizit seine toString()-Methode aufrufen oder die String()-Funktion verwenden.

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()

Der einzige Weg, JavaScript dazu zu bringen, toString() anstelle von [Symbol.toPrimitive]() auf einem Symbol-Wrapper-Objekt implizit aufzurufen, besteht darin, zuerst die Methode [Symbol.toPrimitive]() zu löschen.

Warnung: Sie sollten dies in der Praxis nicht tun. Verändern Sie niemals eingebaute 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® 2026 Language Specification
# sec-symbol.prototype.tostring

Browser-Kompatibilität

Siehe auch