Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 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 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 Wrapper-Objekt ist. Sie löst einen TypeError für andere this-Werte aus, ohne zu versuchen, sie in Symbolwerte umzuwandeln.

Da Symbol eine [Symbol.toPrimitive]()-Methode hat, hat diese Methode immer Vorrang vor toString(), wenn ein Symbol-Objekt in einen String umgewandelt wird. Da jedoch Symbol.prototype[Symbol.toPrimitive]() ein Symbol-Primitiv zurückgibt und Symbol-Primitiven einen TypeError auslösen, wenn sie implizit in einen String konvertiert werden, wird die toString()-Methode vom Sprachmodus nie implizit aufgerufen. Um ein Symbol in einen String umzuwandeln, müssen Sie entweder 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)"

Impliziter Aufruf von toString()

Die einzige Möglichkeit, um JavaScript dazu zu bringen, toString() statt [Symbol.toPrimitive]() auf einem Symbol-Wrapper-Objekt implizit aufzurufen, besteht darin, die [Symbol.toPrimitive]()-Methode zuerst 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