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

Aktivieren Sie den SSHD-Vorgang im Docker

Installieren Sie zunächst den OpenSSH-Server im D...

So verstehen und identifizieren Sie Dateitypen in Linux

Vorwort Wie wir alle wissen, ist in Linux alles e...

So verwenden Sie wangEditor in Vue und erhalten durch Echo von Daten den Fokus

Bei der Hintergrundverwaltung von Projekten werde...

Lassen Sie uns ausführlich über den Vue-Lebenszyklus sprechen

Inhaltsverzeichnis Vorwort 1. Lebenszyklus in Vue...

Fallanalyse mehrerer MySQL-Aktualisierungsvorgänge

Inhaltsverzeichnis Fallstudie Kontostand aktualis...

js canvas realisiert kreisförmige Wasseranimation

In diesem Artikelbeispiel wird der spezifische Co...

Vollständige Analyse der MySQL-Datentypen

Datentyp: Die grundlegenden Regeln, die definiere...

So installieren Sie Nginx in Docker und konfigurieren den Zugriff über https

1. Laden Sie das neueste Nginx-Docker-Image herun...