Detaillierte Erläuterung der Konvertierung von JavaScript-Objekten in primitive Werte

Detaillierte Erläuterung der Konvertierung von JavaScript-Objekten in primitive Werte

Objekt.prototype.valueOf()

Der valueOf eines Objekts ist so konzipiert, dass er den primitiven Wert des Objekts zurückgibt und bei Bedarf automatisch die Konvertierung des Objekts in seinen primitiven Wert durchführt. Klicken Sie hier für Details.

Objekt.prototype.toString()

Die Methode toString() gibt eine Zeichenfolgendarstellung des Objekts zurück und wird automatisch ausgeführt, wenn ein Objekt in eine Zeichenfolge konvertiert werden soll. Die Standardmethode toString() eines Objekts gibt [Objekttyp] zurück, wobei Typ der Name des Konstruktors des Objekts ist. Klicken Sie hier für Details.

Symbol.toPrimitive

Symbol.toPrimitive(hint) hat dieselbe Funktion wie valueOf(), hat aber eine höhere Priorität als valueOf(); außerdem akzeptiert die Methode einen Parameterhinweis, der verwendet wird, um den spezifischen Typ des zu konvertierenden Originalwerts anzugeben:

  • Nummer: numerischer Typ
  • Zeichenfolge: Zeichenfolgentyp
  • Standard: Standard
lass obj = {
  [Symbol.toPrimitive](Hinweis) {
    Schalter (Hinweis) {
      Fall 'Nummer':
        Rückgabe 123;
      Fall 'Zeichenfolge':
        gib 'str' zurück;
      Fall 'Standard':
        gib „Standard“ zurück;
      Standard:
        neuen Fehler werfen();
     }
   }
};
2 * Objekt // 246
3 + Objekt // '3Standard'
obj == 'Standard' // wahr
Zeichenfolge (Objekt) // 'str'

Objektkonvertierungsprimitivwert

Die oben genannten drei Methoden werden ausgelöst, wenn erwartet wird, dass das Objekt in einen primitiven Wert konvertiert wird.

1. Wird voraussichtlich in den String-Typ konvertiert

Der entsprechende Hinweistyp ist String

Wo die Ausgabe erfolgt, z. B. alert()

Zeichenfolge (Objekt)

sei a = {
  zuString () {
    Rückgabewert '2'
  }
}
console.log(Zeichenfolge(a)) // 2

Zeichenfolgenverkettungsvorgang (+)

sei a = {
  zuString () {
    Rückgabewert '2'
  }
}
konsole.log(a + 'vv')

Vorlagenzeichenfolgen

sei a = {
  [Symbol.toPrimitive] (Hinweis) {
    console.log(Hinweis) // Zeichenfolge
    Rückgabe 2
  }
}
console.log(`Bist du alt ${a}?`) // Bist du alt 2?

2. Wird voraussichtlich in einen numerischen Typ konvertiert

Der entsprechende Hinweistyp ist Nummer

Division:

sei a = {
  Wert von () {
    Rückgabe 2
  }
}
konsole.log(2 / a, a / 2) // 1 1

Nummer (Objekt):

sei a = {
  [Symbol.toPrimitive] (Hinweis) {
    console.log(Hinweis) // Nummer
    Rückgabe 2
  }
}
console.log(Zahl(a)) // 2

Positive und negative Vorzeichen (beachten Sie, dass es sich nicht um eine Additions- oder Subtraktionsoperation handelt):

sei a = {
  [Symbol.toPrimitive] (Hinweis) {
    console.log(Hinweis) // Nummer
    Rückgabe 2
  }
}
console.log(+a) // 2
console.log(-a) // -2

3. Voraussichtliche Konvertierung in den Standardtyp (anderes)

Der entsprechende Hinweistyp ist Standard

Numerische Addition (d. h. das hinzugefügte Objekt ist ein numerischer Typ):

sei a = {
  [Symbol.toPrimitive] (Hinweis) {
    console.log(Hinweis) // Standard
    Rückgabe 2
  }
}
konsole.log(1 + a) // 3

Das ist etwas unerwartet. Ich dachte, dass der erwartete Konvertierungstyp in diesem Fall ein numerischer Typ sein sollte, aber tatsächlich ist es der Standardtyp.

Boolesche Operationen : Alle Objekte werden in „true“ umgewandelt;

sei a = {
  [Symbol.toPrimitive] (Hinweis) {
    console.log(Hinweis) // Kein Trigger gibt false zurück.
  }
}
console.log(Boolean(a), a && 123) // wahr 123

Zu den Booleschen Operationen gehören ==

Die Reihenfolge, in der die drei Methoden ausgelöst werden

Stellen Sie zunächst fest, ob das Objekt über die Methode Symbol.toPrimitive(hint) verfügt. Wenn ja, führen Sie die Methode aus. Wenn nicht, führen Sie die folgenden Schritte aus.

Wenn eine Konvertierung in einen String-Typ erwartet wird, wird zuerst die Methode toString() ausgeführt;

Wenn eine Konvertierung in den Standardtyp oder numerischen Typ erwartet wird, wird zuerst die Methode valueOf() ausgeführt:

Hinweis : Wenn keine valueOf()-Methode vorhanden ist, aber eine toString()-Methode definiert ist, wird die toString()-Methode ausgeführt.

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • 4 gängige Möglichkeiten zum Erstellen von Objekten in js und ihre Vor- und Nachteile
  • Einführung in integrierte JavaScript-Objekte
  • Einführung in die Unveränderlichkeit von JavaScript-Objekten

<<:  Css3 realisiert nahtloses Scrollen und Anti-Shake

>>:  Lösung für zu große Mysql-Binlog-Protokolldateien

Artikel empfehlen

Detaillierter Prozess der FastAPI-Bereitstellung auf Docker

Docker-Lernen https://www.cnblogs.com/poloyy/p/15...

Detaillierte Analyse des Linux-Kernel-Makros container_of

1. Wie oben erwähnt Ich habe dieses Makro gesehen...

Einrichten eines Proxyservers mit nginx

Nginx kann seine Reverse-Proxy-Funktion zum Imple...

Der gesamte Prozess der Installation von Gogs mit Pagoda Panel und Docker

Inhaltsverzeichnis 1 Installieren Sie Docker im B...

Beispiel einer DOM-Operationstabelle (DOM erstellt Tabelle)

1. Erstellen Sie eine Tabelle mit HTML-Tags: Code...

Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke

Sortierabfrage (Sortieren nach) Im E-Commerce: Wi...

So konfigurieren Sie SSL für den Koa2-Dienst

I. Einleitung 1: SSL-Zertifikat Mein Domänenname ...

Verwenden Sie Docker, um ein Git-Image mithilfe des Klon-Repositorys zu erstellen

Überblick Ich verwende Docker seit über einem Jah...

Zusammenfassung der Dateninteraktion zwischen Docker-Container und Host

Vorwort Beim Einsatz von Docker in einer Produkti...

MySql-Anmeldekennwort vergessen und Lösung für vergessenes Kennwort

Methode 1: MySQL bietet einen Befehlszeilenparame...

HTML-Seite unterstützt die Implementierung des Dunkelmodus

Seit 2019 verwenden sowohl Android- als auch iOS-...