


Einführung in den Unterschied zwischen „typeof' und „instanceof' in JavaScript (Codebeispiel)
Dieser Artikel bietet Ihnen eine Einführung in den Unterschied zwischen „typeof“ und „instanceof“ in JavaScript. Ich hoffe, dass er für Freunde hilfreich ist.
Typeof und Instanzof werden in JavaScript häufig verwendet, um festzustellen, ob eine Variable leer ist oder welchen Typ sie hat. Aber es gibt immer noch Unterschiede zwischen ihnen:
typeof
typeof ist eine unäre Operation, die vor einem Operanden platziert wird, und der Operand kann von jedem beliebigen Typ sein.
Es wird eine Zeichenfolge zurückgegeben, die den Typ des Operanden beschreibt. (Der Operator „typeof“ gibt eine Zeichenfolge zurück, die zur Darstellung des Datentyps des Ausdrucks verwendet wird.)
typeof ist eigentlich eine Instanz zur Bestimmung des Typs des Parameters. Nur ein Parameter
typeof kann im Allgemeinen nur return Die folgenden Ergebnisse: „Zahl“, „Zeichenfolge“, „boolean“, „Objekt“, „Funktion“ und „undefiniert“.
Der Operand ist eine Zahl typeof(x) = "number"
String typeof(x) = "string"
Boolescher Wert typeof(x) = "boolean"
Objekt, Array und Null typeof(x) = "object"
Funktion typeof(x) = "function"
console.log(typeof (123));//typeof(123)返回"number" console.log(typeof ("123"));//typeof("123")返回"string" var param1 = "string"; var param2 = new Object(); var param3 = 10; console.log(typeof(param1)+"\n"+typeof(param2)+"\n"+typeof(param3)); // string object number
Wir können typeof verwenden, um zu ermitteln, ob eine Variable vorhanden ist existiert, wie zum Beispiel if(typeof a!="undefined"){alert("ok")}, verwenden Sie if(a) nicht, denn wenn a nicht existiert (nicht deklariert), tritt ein Fehler auf. Für spezielle Objekte wie Array und Null Die Verwendung von typeof gibt immer ein Objekt zurück. Dies ist die Einschränkung von typeof.
Arrays werden häufig in js verwendet, z. B. mehrere Eingaben mit demselben Namen. Wenn sie dynamisch generiert werden, müssen Sie beim Senden feststellen, ob es sich um Arrays handelt.
if(document.mylist.length != "undefined" ) {} //这个用法有误. 正确的是 `if( typeof(document.mylist.length) != "undefined" ) {}` 或 `if( !isNaN(document.mylist.length) ) {}`
Der Operand von typeof ist keine Definition, der zurückgegebene Wert ist „undefiniert“.
In JavaScript werden Sie versuchen, den Typ einer Variablen mit dem Typeof-Operator zu bestimmen. Bei der Verwendung des Typeof-Operators tritt ein Problem bei der Verwendung von Referenzen auf Typen zum Speichern von Werten Unabhängig von der Referenz Egal um welchen Objekttyp es sich handelt, es wird „Objekt“ zurückgegeben. Dies erfordert, dass Instanzen erkennen, ob ein Objekt eine Instanz eines anderen Objekts ist.
instanceof
Der Instanzof-Operator wird verwendet, um zu testen, ob ein Objekt das Prototypattribut eines Konstruktors in seiner Prototypkette hat.
Syntax: Objektinstanz des Konstruktors
Parameter: Objekt (zu erkennendes Objekt) Konstruktor (ein Konstruktor)
Beschreibung: Der Operator „Instanz des Konstruktors“ wird verwendet, um zu erkennen, ob „constructor.prototype“ im Parameterobjekt vorhanden ist die Prototypenkette.
Instanz: Instanz, Beispiel
eine Instanz von b?alert("true"):alert("false"); //a ist eine Instanz von b? Wahr: Falsch
instanceof wird verwendet, um zu bestimmen, ob eine Variable eine Instanz eines Objekts ist,
如 :var a=new Array(); alert(a instanceof Array); // true, 同时 alert(a instanceof Object) //也会返回 true; 这是因为 Array 是 object 的子类。 再如:function test(){}; var a=new test(); alert(a instanceof test) 会返回true alert(a==b); //flase
Fall:
另外,更重的一点是 `instanceof` 可以在继承关系中用来判断一个实例是否属于它的父类型。 例如: function Foo(){} Foo.prototype = new Aoo();//JavaScript 原型继承 var foo = new Foo(); console.log(foo instanceof Foo)//true console.log(foo instanceof Aoo)//true 上面的代码中是判断了一层继承关系中的父类,在多层继承关系中,instanceof 运算符同样适用。 又如: console.log(Object instanceof Object);//true console.log(Function instanceof Function);//true console.log(Number instanceof Number);//false console.log(String instanceof String);//false console.log(Function instanceof Object);//true console.log(Foo instanceof Function);//true console.log(Foo instanceof Foo);//false
// 定义构造函数 function C(){} function D(){} var o = new C(); // true,因为 Object.getPrototypeOf(o) === C.prototype o instanceof C; // false,因为 D.prototype不在o的原型链上 o instanceof D; o instanceof Object; // true,因为Object.prototype.isPrototypeOf(o)返回true C.prototype instanceof Object // true,同上 C.prototype = {}; var o2 = new C(); o2 instanceof C; // true o instanceof C; // false,C.prototype指向了一个空对象,这个空对象不在o的原型链上. D.prototype = new C(); // 继承 var o3 = new D(); o3 instanceof D; // true o3 instanceof C; // true
Wenn es um „instanceof“ geht, müssen wir einfügen Noch eine Frage, nämlich die Funktion Argumente. Wir denken vielleicht alle, dass Argumente ein Array sind, aber wenn Sie zum Testen die Instanz von verwenden, werden Sie feststellen, dass Argumente kein Array-Objekt sind, auch wenn es ähnlich aussieht.
Außerdem:
Testen Sie var a=new Array();if (eine Instanz eines Objekts) Alert('Y');else Alert('N');
Habe 'Y'
aber wenn (Fensterinstanz des Objekts) Alert('Y');else Alert('N');
bekam 'N'
Also, Das hier von der Instanz von getestete Objekt bezieht sich auf das Objekt in der JS-Syntax, nicht auf das Dom-Modellobjekt.
Es gibt einige Unterschiede bei der Verwendung von typeof
alert(typeof(window)) will get object
Es sollte beachtet werden, dass, wenn der Ausdruck obj instanceof Foo true zurückgibt, Dies bedeutet nicht, dass der Ausdruck immer true zurückgibt, da sich der Wert des Foo.prototype-Attributs ändern kann und der geänderte Wert möglicherweise nicht in der Prototypenkette von obj vorhanden ist. In diesem Fall wird der Wert des ursprünglichen Ausdrucks zurückgegeben falsch werden. In einem anderen Fall ändert sich auch der Wert des ursprünglichen Ausdrucks, dh die Prototypkette des Objekts obj wird geändert. In der aktuellen ES-Spezifikation können wir zwar nur den Prototyp des Objekts lesen, ihn aber nicht ändern Mithilfe von nicht standardmäßigen __proto__-Magieeigenschaften sind erreichbar. Nach der Ausführung von obj.__proto__ = {} gibt die obj-Instanz von Foo beispielsweise false zurück.
Beispiel: Zeigen Sie, dass String-Objekte und Date-Objekte beide zum Objekttyp gehören.
Der folgende Code verwendet „instanceof“, um zu beweisen, dass String- und Date-Objekte ebenfalls zum Objekttyp gehören.
例子: 表明String对象和Date对象都属于Object类型 下面的代码使用了instanceof来证明:String和Date对象同时也属于Object类型。 var simpleStr = "This is a simple string"; var myString = new String(); var newStr = new String("String created with constructor"); var myDate = new Date(); var myObj = {}; simpleStr instanceof String; // returns false, 检查原型链会找到 undefined myString instanceof String; // returns true newStr instanceof String; // returns true myString instanceof Object; // returns true myObj instanceof Object; // returns true, despite an undefined prototype ({}) instanceof Object; // returns true, 同上 myString instanceof Date; // returns false myDate instanceof Date; // returns true myDate instanceof Object; // returns true myDate instanceof String; // returns false
Das obige ist der detaillierte Inhalt vonEinführung in den Unterschied zwischen „typeof' und „instanceof' in JavaScript (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Die Verschiebung von C/C zu JavaScript erfordert die Anpassung an dynamische Typisierung, Müllsammlung und asynchrone Programmierung. 1) C/C ist eine statisch typisierte Sprache, die eine manuelle Speicherverwaltung erfordert, während JavaScript dynamisch eingegeben und die Müllsammlung automatisch verarbeitet wird. 2) C/C muss in den Maschinencode kompiliert werden, während JavaScript eine interpretierte Sprache ist. 3) JavaScript führt Konzepte wie Verschlüsse, Prototypketten und Versprechen ein, die die Flexibilität und asynchrone Programmierfunktionen verbessern.

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools