In js gibt es insgesamt 5 primitive Werte, 6 können nach Typ beurteilt werden und 9 native integrierte Konstruktoren.
Diese 569 bilden die Grundlage der js-Sprache.
Die 5 Grundwerte sind: Zahlen, Zeichen, Boolean, Null, undefiniert
Typeof kann beurteilen: Zahlen, Zeichen, Boolescher Wert, Objekt, Funktion, undefiniert. Beachten Sie, dass Null und Array beide Ausgabeobjekte vom Typ sind.
typeof kann nicht zwischen Arrays und Objekten unterscheiden. Verwenden Sie Object.prototype.toString.apply().
if(value&&typeof value ==='object'&&value.constructor === Array)
Die obige Erkennung ergibt „Falsch“, wenn das Array in verschiedenen Frames und Fenstern erstellt wird und das Fensterobjekt unterschiedlich ist.
Die zuverlässige Methode ist if(Object.prototype.toString.apply(value)==="[object Array]")
Das Argument-Array ist kein Array, es ist nur ein Objekt mit einer Längen-Member-Eigenschaft.
Wie im folgenden Beispiel gezeigt, sind Argumente keine gewöhnlichen Arrays
}
a();//Ausgabe [Objektargumente]
}
a();//Ausgabe [Objektarray]
Wie bestimmt Instanz von, ob es sich um eine Instanz handelt?
Zu den Attributen im Prototyp gehört der Konstruktor.
Das Standard-Prototypenattribut ist ein Objektobjekt und kann auf einen beliebigen komplexen Wert gesetzt werden, wobei der ursprüngliche Wert ignoriert wird.
Obwohl es ein Objekt ist, ist es etwas Besonderes, und die zirkuläre Kette verknüpft jede Instanz mit dem Prototypattribut ihres Konstruktors. Es gibt eine versteckte Verbindung zwischen der Instanz und der Prototypeigenschaft des Konstruktors, also dem __proto__ der Instanz. Gleichzeitig werden die Konstruktorattribute der Instanz über den Konstruktor des Konstruktorprototyps abgerufen.
Behalten Sie jedoch den Konstruktor bei, damit die neue Instanz die Attribute des Konstruktors aufweist, und Sie können auch die Instanz von zur Beurteilung verwenden.
Foo.prototype={constructor:Foo}
var FooInstance = new Foo;
FooInstance.__proto__=== Foo.prototype;//true
FooInstance.constructor === Foo; //true
Tatsächlich basiert die Instanz der Beurteilung nicht auf dem Konstruktor, sondern auf der Prototypenkette, wie im folgenden Beispiel gezeigt
Verwenden Sie primitive Werte, keine Konstruktoren
Welche Werte gelten als falsch: false, „“, null, 0, -0, NaN, undefiniert, diese gelten als falsch, die anderen sind wahr
Aber bitte beachten Sie das folgende Beispiel
Der obige Artikel ist etwas theoretischer, aber diese sind die Grundlage der JavaScript-Sprache und müssen klar verstanden werden.