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
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()
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.
delete Symbol.prototype[Symbol.toPrimitive];
console.log(`${Object(Symbol("foo"))}`); // "Symbol(foo)"
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-symbol.prototype.tostring |