Heim >Web-Frontend >js-Tutorial >Detaillierte Erläuterung der Grundtypen von Javascript_Grundkenntnisse

Detaillierte Erläuterung der Grundtypen von Javascript_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:29:501399Durchsuche

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

Code kopieren Der Code lautet wie folgt:

var a = function (){
var b = Object.prototype.toString.apply(arguments);
console.log(b);

}
a();//Ausgabe [Objektargumente]

Code kopieren Der Code lautet wie folgt:

var a = function (){
var c = [];
var b = Object.prototype.toString.apply(c);
console.log(b);

}
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.

Code kopieren Der Code lautet wie folgt:

var Foo = function(){}

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

Code kopieren Der Code lautet wie folgt:

var Foo = function(){};
Foo.prototype={};
var FooInstance = {};
FooInstance.__proto__=Foo.prototype;
console.log(FooInstance instanceof Foo);//true

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

Code kopieren Der Code lautet wie folgt:

  var a = Boolean(false);
        var b = new Boolean("");
If (a){console.log(a);}//Kann
nicht ausgeben Wenn (b){console.log(b);}//Boolean {[[PrimitiveValue]]: false} new einem Objekt entspricht, ist es nicht false

Der obige Artikel ist etwas theoretischer, aber diese sind die Grundlage der JavaScript-Sprache und müssen klar verstanden werden.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn