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 Zeichenfolgenausdruck dieses Symbolwertes zurück.
Probieren Sie es aus
Syntax
toString()
Parameter
Keine.
Rückgabewert
Eine Zeichenfolge, 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 Zeichenfolge 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 zu zwingen.
Da Symbol
eine [Symbol.toPrimitive]()
Methode hat, hat diese Methode immer Vorrang vor toString()
, wenn ein Symbol
-Objekt in eine Zeichenfolge umgewandelt wird. Da jedoch Symbol.prototype[Symbol.toPrimitive]()
ein Symbol-Primärwert zurückgibt, und Symbol-Primärwerte einen TypeError
auslösen, wenn sie implizit in eine Zeichenfolge konvertiert werden, wird die toString()
Methode niemals implizit von der Sprache aufgerufen. Um ein Symbol in eine Zeichenfolge umzuwandeln, müssen Sie seine toString()
Methode explizit 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()
Die einzige Möglichkeit, JavaScript dazu zu bringen, toString()
anstelle von [Symbol.toPrimitive]()
auf einem Symbol-Wrapper-Objekt implizit aufzurufen, besteht darin, zuerst die [Symbol.toPrimitive]()
Methode 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 Language Specification # sec-symbol.prototype.tostring |
Browser-Kompatibilität
BCD tables only load in the browser