Über den Unterschied zwischen js typeof und instanceof bei der Beurteilung von Datentypen und deren Entwicklung und Verwendung

Über den Unterschied zwischen js typeof und instanceof bei der Beurteilung von Datentypen und deren Entwicklung und Verwendung

Vorwort:

Bei der täglichen Entwicklung stoßen wir häufig auf Situationen, in denen wir den Datentyp einer Variablen bestimmen müssen oder ob die Variable null ist. Wie wählen Sie den Operator aus, um den Typ zu bestimmen? Dieser Artikel fasst die Wissenspunkte zu typeof und instanceof zusammen, die unsere Entwickler beherrschen müssen, und gibt Vorschläge für deren Verwendung bei der Entwicklung. Gleichzeitig treten solche Probleme bei Interviews häufig auf.

1. Typ des Operators

typeof bestimmt den Datentyp einer beliebigen Variable. Genauer gesagt ist dies die beste Methode, um zu bestimmen, ob eine Variable ein String, eine Zahl, ein Boolescher Wert oder undefiniert ist. Sein Rückgabewert ist ein String-Typ und seine Verwendung ist wie folgt: typeof ist ein Operator, keine Funktion, aber er kann verwendet werden, um Variablen als Parameter zu übergeben:
a、typeof operand
b、typeof (operand)

(1) Der Rückgabewert ist vom Typ String, wobei:

Rückgabewert

Bedeutungswert

"undefiniert"

Undefiniert

"Boolesch"

Boolescher Wert

"Schnur"

Zeichenfolge

"Nummer"

Numerisch

"Objekt"

Ein Objekt (keine Funktion) oder null

"Funktion"

Funktion

"Symbol"

Symbol

(2) Gemeinsame Verwendungsmethoden

        console.log(Typ von nicht definiert); //'nicht definiert'
        console.log(Typ von true);//'bpplean'
        console.log(typeof ("Nummer")); //'Zeichenfolge'
        console.log(Typ von "Zahl"); //'Zeichenfolge' 
        console.log(Typ von 1);//'Nummer'
        console.log(Typ von Symbol());//'Symbol'
        //Für spezielle Objekte wie Array und Null gibt typeof immer ein Objekt zurück, was die Einschränkung von typeof darstellt console.log(typeof null); //'Objekt'
        console.log(Typ von [1, 2, 3]);//'Objekt'
        console.log(Typ von nicht definiert); //'nicht definiert'
        //Verwenden Sie den typeof-Operator, um Funktionen von anderen Objekten zu unterscheiden function f1() { console.log(111); }
        console.log(Typ von f1); //'Funktion'  
        console.log(Typ von f1()); // 111 'undefiniert'

(3) Sie können typeof nicht verwenden, um zu bestimmen, ob eine Variable existiert

        var a;
        wenn (a === undefiniert) {
            console.log("Variable existiert nicht")
        } anders {
            console.log("Variable existiert")
        }
     // Die Variable existiert nicht

2. Instanz des Operators

Während typeof für primitive Werte nützlich ist, ist es für Referenzwerte weniger nützlich. Normalerweise ist es uns egal, ob ein Wert ein Objekt ist, sondern um welchen Objekttyp es sich handelt. Um dieses Problem zu lösen, stellt ECMAScript den Operator instanceof bereit. Verwenden Sie es wie folgt:

        Funktion f1() { console.log(111);
        console.log(f1 Instanz von Objekt);//true
        console.log(f1 Instanz der Funktion);//true
        console.log(f1 Instanz von RegExp); //false


Alle Referenzwerte sind Instanzen von Object , daher gibt das Testen eines beliebigen Referenzwerts mit instanceof und Object true zurück.

  • Wenn Sie instanceof auf einen primitiven Wert anwenden, wird ebenfalls immer false zurückgegeben, da primitive Werte keine Objekte sind.

instanceof wird verwendet, um zu bestimmen, ob prototype Eigenschaft einer Konstruktorfunktion irgendwo in der Prototype-Kette eines Objekts vorkommt. Das Umsetzungsprinzip ist wie folgt:

  Funktion meineInstanzvon(links, rechts) {
    let proto = Object.getPrototypeOf(left), // Den Prototyp des Objekts abrufen prototype = right.prototype; // Das Prototypobjekt der Konstruktorfunktion abrufen // Bestimmen, ob sich das Prototypobjekt der Konstruktorfunktion in der Prototypkette des Objekts befindet while (true) {
      wenn (!proto) false zurückgibt;
      wenn (proto === Prototyp) true zurückgibt;
      proto = Objekt.getPrototypeOf(proto);
    }
 }

3. Der Unterschied zwischen typeof und instanceof und Vorschläge zur Verwendung in der Entwicklung

Sowohl typeof als auch instance sind Methoden zur Bestimmung von Datentypen. Die Unterschiede sind folgende:

  • typeof gibt den Basistyp einer Variablen zurück, instanceof gibt einen Booleschen Wert zurück
  • instanceof kann komplexe Referenzdatentypen genau bestimmen, grundlegende Datentypen jedoch nicht korrekt.
  • typeof hat auch seine Nachteile. Obwohl es den grundlegenden Datentyp (außer null ) bestimmen kann, kann es den Referenzdatentyp außer dem function nicht bestimmen.

Es ist ersichtlich, dass die beiden oben genannten Methoden Nachteile haben und nicht die Anforderungen aller Szenarien erfüllen können.

Wenn Sie Datentypen im Allgemeinen erkennen müssen, empfiehlt es sich, Object.prototype.toString zu verwenden und diese Methode aufzurufen, um einheitlich eine Zeichenfolge im Format “[object Xxx]” zurückzugeben. Verwenden Sie es wie folgt:

        console.log(Object.prototype.toString.call(undefined)) //"[Objekt undefiniert]"
        console.log(Object.prototype.toString.call(true)) // "[Objekt Boolean]"
        console.log(Object.prototype.toString.call('1')) // "[Objekt String]"
        console.log(Object.prototype.toString.call(1)) // "[Objektnummer]"
        console.log(Object.prototype.toString.call(Symbol())) // "[Objekt Symbol]"
        console.log(Object.prototype.toString.call({})) // "[Objekt Objekt]"
        console.log(Object.prototype.toString.call(function () { })) // "[Objektfunktion]"
        console.log(Object.prototype.toString.call([])) //"[Objekt-Array]"
        console.log(Object.prototype.toString.call(null)) //"[Objekt Null]"
        console.log(Object.prototype.toString.call(/123/g)) //"[Objekt RegExp]"
        console.log(Objekt.prototype.toString.call(neues Datum())) //"[Objekt Datum]"
 

Zusammenfassen:

Dies ist das Ende dieses Artikels über den Unterschied zwischen js typeof und instanceof bei der Beurteilung von Datentypen und deren Entwicklung und Verwendung. Weitere relevante Inhalte zu js typeof und instanceof finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Javascript-Grundlagenschleife
  • So verwenden Sie async und await richtig in JS-Schleifen
  • Vier Methoden zur Datentypbeurteilung in JS
  • Ein Beispiel für das elegante Schreiben von Urteilen in JavaScript
  • So konvertieren Sie eine Zeichenfolge in JavaScript in eine Zahl
  • parseInt parseFloat js Zeichenfolge Konvertierung Nummer
  • Allgemeine JavaScript-Anweisungen: Schleife, Beurteilung, Zeichenfolge in Zahl

<<:  Lösung für das automatische Trennen der Verbindung von Navicat zur Datenbank nach einer gewissen Zeit

>>:  Lösung zum Importieren weiterer Daten aus MySQL in Hive

Artikel empfehlen

js zur Realisierung von Login- und Registrierungsfunktionen

In diesem Artikelbeispiel wird der spezifische Co...

Einführung in die Eigenschaften von B-Tree

B-Baum ist eine allgemeine Datenstruktur. Daneben...

Empfohlene Methode zur Fehlerbehandlung für canvas.toDataURL image/png

Problemhintergrund: Es ist erforderlich, einen Sc...

Über das WeChat-Gleitproblem des UniApp-Editors

Das Uniapp-Applet wird ein ähnliches Dropdown-Pro...

JavaScript zur Implementierung der Login-Schiebereglerüberprüfung

In diesem Artikelbeispiel wird der spezifische Ja...

Das kürzeste JS, um festzustellen, ob es sich um IE6 handelt (IE-Schreibmethode)

Häufig verwendeter JavaScript-Code zum Erkennen d...

Implementierung des iview-Berechtigungsmanagements

Inhaltsverzeichnis iview-admin2.0 integrierte Ber...

Zwei Implementierungen des Front-End-Routings von Vue-Router

Inhaltsverzeichnis Modusparameter HashHistorie Ha...