Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2017 browserübergreifend verfügbar.
Die statische Dateneigenschaft Symbol.toPrimitive repräsentiert das bekannte Symbol Symbol.toPrimitive. Alle Typumwandlungs-Algorithmen suchen dieses Symbol in Objekten nach der Methode, die einen bevorzugten Typ akzeptiert und eine primitive Darstellung des Objekts zurückgibt, bevor sie auf die Verwendung der valueOf()- und toString()-Methoden des Objekts zurückfallen.
Das bekannte Symbol Symbol.toPrimitive.
| Schreibbar | nein |
| Aufzählbar | nein |
| Konfigurierbar | nein |
Mit Hilfe der Symbol.toPrimitive-Eigenschaft (verwendet als Funktionswert) kann ein Objekt in einen primitiven Wert umgewandelt werden. Die Funktion wird mit einem String-Argument hint aufgerufen, das den bevorzugten Typ des resultierenden primitiven Werts angibt. Das hint-Argument kann eine der folgenden ist: "number", "string" und "default".
Der "number"-Hinweis wird von numerischen Umwandlungsalgorithmen verwendet. Der "string"-Hinweis wird vom String-Umwandlungsalgorithmus verwendet. Der "default"-Hinweis wird vom primitiven Umwandlungsalgorithmus verwendet. Der hint dient nur als schwaches Präferenzsignal, und die Implementierung kann ihn ignorieren (wie es Symbol.prototype[Symbol.toPrimitive]() tut). Die Sprache erzwingt keine Übereinstimmung zwischen dem hint und dem Ergebnistyp, obwohl [Symbol.toPrimitive]() ein primitiver Wert zurückgeben muss, oder ein TypeError wird ausgelöst.
Objekte ohne die [Symbol.toPrimitive]-Eigenschaft werden in primitive Werte umgewandelt, indem die Methoden valueOf() und toString() in unterschiedlicher Reihenfolge aufgerufen werden, was im Abschnitt über Typumwandlung ausführlicher erklärt wird. [Symbol.toPrimitive]() ermöglicht die vollständige Kontrolle über den Umwandlungsprozess in primitive Werte. Zum Beispiel behandelt Date.prototype[Symbol.toPrimitive]() "default" so, als wäre es "string" und ruft toString() statt valueOf() auf. Symbol.prototype[Symbol.toPrimitive]() ignoriert den Hinweis und gibt immer ein Symbol zurück, was bedeutet, dass auch in String-Kontexten Symbol.prototype.toString() nicht aufgerufen wird, und Symbol-Objekte müssen immer explizit über String() in Strings umgewandelt werden.
Das folgende Beispiel beschreibt, wie die Symbol.toPrimitive-Eigenschaft den primitiven Wert, der aus einem Objekt umgewandelt wurde, modifizieren kann.
| ECMAScript® 2027 Language Specification # sec-symbol.toprimitive |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.