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

js+css zur Realisierung eines dreistufigen Navigationsmenüs

In diesem Artikelbeispiel wird der spezifische Co...

7 coole dynamische Website-Designs zur Inspiration

Im Bereich Design gibt es jedes Jahr unterschiedl...

Adaptive Breitentabelle für HTML-Seiten

Auf den Seiten von Webanwendungen werden häufig T...

MySQL kontrolliert die Anzahl der Versuche, falsche Passwörter einzugeben

1. So überwachen Sie MySQL-Deadlocks in Produktio...

Vue implementiert das Senden von Emoticons im Chatfenster

Der spezifische Code zum Senden von Emoticons im ...

Unvollständige Lösung für die Verwendung von Eingabetyp=Textwert=str

Ich bin heute auf ein sehr seltsames Problem gesto...

Detaillierte Erklärung gängiger Befehle im Docker-Repository

Einloggen Docker-Anmeldung Schließen Sie die Regi...

Detaillierte Erklärung des TARGET-Attributs des HTML-Hyperlink-Tags A

Das Hyperlink-Tag <a> stellt einen Linkpunkt...

Detaillierte Erläuterung der Verwendung von Object.create-Instanzen in js

1. Erstellen Sie mit der Methode Object.create() ...

ElementUI-Komponente el-dropdown (Falle)

Auswählen und ändern: Klicken Sie, um den aktuell...

Implementierung eines einfachen Weihnachtsspiels mit JavaScript

Inhaltsverzeichnis Vorwort Ergebnisse erzielen Co...