Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. Symbol
  6. toPrimitive

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

View in EnglishAlways switch to English

Symbol.toPrimitive

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨April 2017⁩.

Die statische DateneigenschaftSymbol.toPrimitive repräsentiert dasbekannte SymbolSymbol.toPrimitive. AlleTypumwandlungs-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 dervalueOf()- undtoString()-Methoden des Objekts zurückfallen.

Probieren Sie es aus

const object = {  [Symbol.toPrimitive](hint) {    if (hint === "number") {      return 42;    }    return null;  },};console.log(+object);// Expected output: 42

Wert

Das bekannte SymbolSymbol.toPrimitive.

Eigenschaften vonSymbol.toPrimitive
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Mit Hilfe derSymbol.toPrimitive-Eigenschaft (verwendet als Funktionswert) kann ein Objekt in einen primitiven Wert umgewandelt werden. Die Funktion wird mit einem String-Argumenthint aufgerufen, das den bevorzugten Typ des resultierenden primitiven Werts angibt. Dashint-Argument kann eine der folgenden ist:"number","string" und"default".

Der"number"-Hinweis wird vonnumerischen Umwandlungsalgorithmen verwendet. Der"string"-Hinweis wird vomString-Umwandlungsalgorithmus verwendet. Der"default"-Hinweis wird vomprimitiven Umwandlungsalgorithmus verwendet. Derhint dient nur als schwaches Präferenzsignal, und die Implementierung kann ihn ignorieren (wie esSymbol.prototype[Symbol.toPrimitive]() tut). Die Sprache erzwingt keine Übereinstimmung zwischen demhint und dem Ergebnistyp, obwohl[Symbol.toPrimitive]() ein primitiver Wert zurückgeben muss, oder einTypeError wird ausgelöst.

Objekte ohne die[Symbol.toPrimitive]-Eigenschaft werden in primitive Werte umgewandelt, indem die MethodenvalueOf() undtoString() in unterschiedlicher Reihenfolge aufgerufen werden, was im Abschnitt überTypumwandlung ausführlicher erklärt wird.[Symbol.toPrimitive]() ermöglicht die vollständige Kontrolle über den Umwandlungsprozess in primitive Werte. Zum Beispiel behandeltDate.prototype[Symbol.toPrimitive]()"default" so, als wäre es"string" und rufttoString() stattvalueOf() auf.Symbol.prototype[Symbol.toPrimitive]() ignoriert den Hinweis und gibt immer ein Symbol zurück, was bedeutet, dass auch in String-KontextenSymbol.prototype.toString() nicht aufgerufen wird, undSymbol-Objekte müssen immer explizit überString() in Strings umgewandelt werden.

Beispiele

Modifizieren primitiver Werte, die aus einem Objekt umgewandelt wurden

Das folgende Beispiel beschreibt, wie dieSymbol.toPrimitive-Eigenschaft den primitiven Wert, der aus einem Objekt umgewandelt wurde, modifizieren kann.

js
// An object without Symbol.toPrimitive property.const obj1 = {};console.log(+obj1); // NaNconsole.log(`${obj1}`); // "[object Object]"console.log(obj1 + ""); // "[object Object]"// An object with Symbol.toPrimitive property.const obj2 = {  [Symbol.toPrimitive](hint) {    if (hint === "number") {      return 10;    }    if (hint === "string") {      return "hello";    }    return true;  },};console.log(+obj2); // 10        — hint is "number"console.log(`${obj2}`); // "hello"   — hint is "string"console.log(obj2 + ""); // "true"    — hint is "default"

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.toprimitive

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp