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
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()
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.
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 GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toString |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support