Es gibt 5 Originalwerte in JS, 6 Arten von Beurteilungen und 9 einheimischen eingebauten Konstruktoren.
Dieser 569 bildet die Grundlage der JS -Sprache.
Die 5 Originalwerte sind: Zahlen, Zeichen, Booleschen, Null, undefiniert
Typeof kann beurteilen: Zahlen, Zeichen, Booleans, Objekt, Funktion, undefiniert. Beachten Sie, dass Null und Arrays beide Ausgabeobjekte typen.
Typof kann Arrays und Objekte nicht unterscheiden. Wie beurteilen Sie Typen? Verwenden Sie Object.Prototype.toString.Apply ().
if (value && typeof value === 'Objekt' && value.constructor === Array)
Wenn die obige Erkennung in verschiedenen Rahmen und Fenstern erstellt wird, wird FALSE gegeben und das Fensterobjekt wird unterschiedlich sein.
Eine zuverlässige Methode ist if (Object.Prototype.toString.Apply (value) === "[Objektarray]"))
Argumente Array ist kein Array, sondern nur ein Objekt mit einem Länge -Mitgliedsattribut.
Wie im folgenden Beispiel gezeigt, sind Argumente keine gewöhnlichen Arrays
Die Codekopie lautet wie folgt:
var a = function () {
var b = Object.Prototype.toString.Apply (Argumente);
console.log (b);
}
a (); // Ausgabe [Objektargumente]
Die Codekopie lautet wie folgt:
var a = function () {
var c = [];
var b = Object.Prototype.toString.Apply (c);
console.log (b);
}
a (); // Ausgabe [Objektarray]
Wie stellt Instanz fest, ob eine Instanz eine Instanz ist
Die Eigenschaften im Prototyp haben Konstruktor.
Die Standardeigenschaft des Standardprototyps ist ein Objektobjekt, das auf einen beliebigen komplexen Wert festgelegt werden kann und die Einstellung auf den ursprünglichen Wert ignorieren kann.
Obwohl er alles ein Objekt ist, ist er etwas Besonderes, und die kreisförmige Kette verbindet jede Instanz mit der Prototyp -Eigenschaft seines Konstruktors. Es besteht eine versteckte Verbindung zwischen der Instanz und dem Prototypattribut des Konstruktors, der __proproto__ der Instanz ist. Gleichzeitig wird das Konstruktorattribut der Instanz durch den Konstruktor des Konstruktors des Konstruktor -Funktionsprototyps erhalten.
Wir müssen jedoch den Konstruktor beibehalten, damit die neue Instanz das Konstruktorattribut haben kann, und wir können auch Instanz verwenden, um zu beurteilen.
Die Codekopie lautet wie folgt:
var foo = function () {}
Foo.prototype = {Konstruktor: foo}
var fooinstance = new foo;
FooInstance .__ Proto __ === foo.prototype; // true
FooInstance.Constructor === Foo; //WAHR
Tatsächlich basiert das Instanz der Urteilsvermögen nicht auf dem Konstruktor, sondern auf der Prototypkette, wie im folgenden Beispiel gezeigt
Die Codekopie lautet wie folgt:
var foo = function () {};
Foo.prototype = {};
var fooinstance = {};
FooInstance .__ proto __ = foo.prototype;
console.log (fooInstance Instance von foo); // true
Verwenden Sie Originalwerte, keine Konstruktoren
Welche Werte sind falsch: falsch, "", Null, 0, -0, Nan, undefiniert, diese sind falsch, andere sind wahr
Aber bitte achten Sie auf das folgende Beispiel
Die Codekopie lautet wie folgt:
var a = boolean (falsch);
var b = neuer boolean ("");
if (a) {console.log (a);} // kann nicht ausgeben
if (b) {console.log (b);} // boolean {[[primitive Value]]: false} Neu ist einem Objekt, es ist nicht falsch
Der obige Artikel ist etwas theoretischer, aber diese sind die Grundlage für die JavaScript -Sprache, und Sie müssen es klar verstehen.