1. Art von Der Operator typeof gibt einen String zurück, der den Typ seines nicht ausgewerteten Operanden angibt. Er wird wie folgt verwendet: Typ des Operanden Typ von (Operand) Operand ist ein Ausdruck, der ein Objekt oder einen primitiven Wert darstellt, dessen Typ zurückgegeben wird. Zum Beispiel Typ von 1 // 'Zahl' Typ von '1' // 'Zeichenfolge' Typ von undefiniert // 'undefiniert' Typ von true // 'Boolesch' Typ von Symbol () // 'Symbol' Typ von null // 'Objekt' Typ von [] // 'Objekt' Typ von {} // 'Objekt' Typ der Konsole // 'Objekt' Typ von console.log // 'Funktion' Die ersten 6 im obigen Beispiel sind grundlegende Datentypen. Obwohl typeof null ein Objekt ist, handelt es sich dabei lediglich um einen seit langem bestehenden Fehler in JavaScript. Dies bedeutet nicht, dass null ein Referenzdatentyp ist, und null selbst ist kein Objekt. Daher ist das von null nach typeof zurückgegebene Ergebnis problematisch und kann nicht als Methode zur Bestimmung von null verwendet werden. Wenn Sie in einer if-Anweisung prüfen müssen, ob es null ist, verwenden Sie zur Prüfung einfach ===null. Gleichzeitig können Sie die Referenztypdaten finden. Wenn Sie typeof zur Beurteilung verwenden, wird mit Ausnahme der Funktion der Rest ein Objekt ausgeben wenn(Typ von a != 'undefiniert'){ //Variable existiert} 2. Instanz von Der Operator instanceof wird verwendet, um zu erkennen, ob die prototype-Eigenschaft einer Konstruktorfunktion in der Prototypenkette eines Instanzobjekts vorkommt. Er wird wie folgt verwendet: Objektinstanz des Konstruktors Objekt ist das Instanzobjekt, Konstruktor ist die Konstruktorfunktion. Die Konstruktorfunktion kann ein Objekt über new instanziieren und instanceof kann bestimmen, ob dieses Objekt das vom vorherigen Konstruktor generierte Objekt ist. //Definieren Sie die Konstruktionsfunktion let Car = function() {} sei benz = neues Auto() benz instanceof Auto // true let Auto = neuer String('xxx') Autoinstanz von String // true lass str = 'xxx' str-Instanz von String // false Informationen zum Implementierungsprinzip von instanceof finden Sie unter: Funktion meineInstanzvon(links, rechts) { // Hier verwenden wir typeof, um den grundlegenden Datentyp zu bestimmen. Wenn dies der Fall ist, geben wir direkt false zurück. wenn (Typ von links !== 'Objekt' || links === null) false zurückgibt; // getProtypeOf ist die API des Object-Objekts, mit der das Prototypobjekt des Parameters let proto = Object.getPrototypeOf(left); abgerufen werden kann. während(wahr) { wenn (proto === null) false zurückgibt; if(proto === right.prototype) return true; //Suche dasselbe Prototypobjekt und gib true zurück proto = Objekt.getPrototypeof(proto); } } Das heißt, folgen Sie der Prototypenkette, bis das gleiche Prototypenobjekt gefunden wird, und geben Sie „true“ zurück, andernfalls „false“. 3. UnterschiedSowohl typeof als auch instanceof sind Methoden zur Bestimmung von Datentypen. Die Unterschiede sind folgende:
1. Für Objekte, Arrays und Null ist der zurückgegebene Wert das Objekt. Beispielsweise sind die von typeof(window), typeof(document) und typeof(null) zurückgegebenen Werte alle Objekte. 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, können Sie Object.prototype.toString verwenden und diese Methode aufrufen, um eine Zeichenfolge im Format „[Objekt Xxx]“ wie folgt zurückzugeben Object.prototype.toString({}) // "[Objekt Objekt]" Object.prototype.toString.call({}) // Gleiches Ergebnis wie oben, außerdem ist Aufruf auch OK Object.prototype.toString.call(1) // "[Objektnummer]" Object.prototype.toString.call('1') // "[Objekt String]" Object.prototype.toString.call(true) // "[Objekt Boolean]" Object.prototype.toString.call(function(){}) // "[Objektfunktion]" Object.prototype.toString.call(null) //"[Objekt Null]" Object.prototype.toString.call(undefined) //"[Objekt undefiniert]" Object.prototype.toString.call(/123/g) //"[Objekt RegExp]" Object.prototype.toString.call(neues Datum()) //"[Objekt Datum]" Object.prototype.toString.call([]) //"[Objekt-Array]" Object.prototype.toString.call(Dokument) //"[Objekt HTMLDocument]" Object.prototype.toString.call(Fenster) //"[Objekt Fenster]" Nachdem wir nun die grundlegende Verwendung von toString kennen, implementieren wir eine Methode zur Beurteilung globaler Datentypen. Funktion getType(Objekt){ let Typ = Typ des Objekts; if (Typ !== "Objekt") { // Zuerst die typeof-Beurteilung durchführen. Wenn es sich um einen grundlegenden Datentyp handelt, den Rückgabetyp direkt zurückgeben; } // Für typeof ist das Ergebnis object. Treffen Sie dann die folgende Entscheidung. Das reguläre Ergebnis ist return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1'); } So verwenden Sie es getType([]) // "Array" typeof [] ist ein Objekt, daher gibt toString getType('123') zurück // "string" typeof gibt direkt getType(window) zurück // "Window" toString gibt getType(null) zurück // Der erste Buchstabe von "Null" wird groß geschrieben, typeof null ist ein Objekt, daher wird toString zur Bestimmung benötigt getType(undefined) // "undefined" typeof gibt direkt getType() zurück // "undefined" typeof gibt direkt getType(function(){}) zurück // "function" typeof kann bestimmen, daher ist der erste Buchstabe klein geschrieben getType(/123/g) //"RegExp" toString gibt Dies ist das Ende dieses Artikels darüber, wie selbst Anfänger den Unterschied zwischen typeof und instanceof in js verstehen können. Weitere Informationen zu typeof und instanceof in js finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Zabbix überwacht Linux-Hosts basierend auf SNMP
TRUNCATE-TABELLE Löscht alle Zeilen in einer Tabe...
Der HTML-Code zum Abfangen von mehrzeiligem Text l...
Axios in Vue einfügen importiere Axios von „Axios...
Inhaltsverzeichnis 1. Komponentenregistrierung 1....
1. Yum-Installation yum installiere Subversion 2....
Dieser Artikel fasst die Hinweise zur Installatio...
Mithilfe von Traceroute können wir den Pfad ermit...
Relativer Pfad – ein Verzeichnispfad, der basieren...
1. Schauen Sie sich zunächst die Anforderungskonf...
In einer Tabelle können Sie die Farbe des oberen ...
Wirkung Die Wirkung ist wie folgt Umsetzungside...
Der HTML-Kopfteil enthält viele Tags und Elemente,...
1. MySQL Master-Slave-Asynchronität 1.1 Netzwerkv...
JavaScript veröffentlicht mittlerweile jedes Jahr...
Es gibt häufig Szenarien, in denen das Bild an di...