Instanceof
Der Operand auf der linken Seite (LHS) ist das zu testende Objekt, der Operand auf der rechten Seite (RHS) ist der eigentliche Konstruktor einer Klasse. Die grundlegende Definition lautet:
Prüft das aktuelle Objekt und gibt true zurück, wenn das Objekt vom angegebenen Objekttyp ist.
Hier sind einige gute Beispiele und hier ist ein Beispiel, das direkt aus Mozillas Entwickler-Website :
var color1 = new String("green");
color1 instanceof String; // returns true
var color2 = "coral"; //no type specified
color2 instanceof String; // returns false (color2 is not a String object)
Erwähnenswert ist auch instanceof
wird als wahr ausgewertet, wenn das Objekt vom Prototyp der Klasse erbt:
var p = new Person("Jon");
p instanceof Person
Das heißt p instanceof Person
wahr ist, da p
erbt von Person.prototype
.
Gemäß der Anfrage des Auftraggebers
Ich habe ein kleines Beispiel mit einem Beispielcode und einer Erklärung hinzugefügt.
Wenn Sie eine Variable deklarieren, geben Sie ihr einen bestimmten Typ.
Zum Beispiel:
int i;
float f;
Customer c;
Die obigen Angaben zeigen Ihnen einige Variablen, nämlich i
, f
y c
. Die Typen sind integer
, float
und eine benutzerdefinierte Customer
Datentyp. Typen wie die oben genannten könnten für jede Sprache sein, nicht nur für JavaScript. Wenn Sie in JavaScript eine Variable deklarieren, legen Sie jedoch nicht ausdrücklich einen Typ fest, var x
x kann eine Zahl / eine Zeichenkette / ein benutzerdefinierter Datentyp sein. Was also instanceof
prüft das Objekt, um zu sehen, ob es von dem Typ ist, der oben angegeben wurde, indem es die Customer
Objekt, das wir tun könnten:
var c = new Customer();
c instanceof Customer; //Returns true as c is just a customer
c instanceof String; //Returns false as c is not a string, it's a customer silly!
Oben haben wir gesehen, dass c
wurde mit dem Typ Customer
. Wir haben sie neu erstellt und überprüft, ob sie vom Typ Customer
oder nicht. Sicher ist, es gibt true zurück. Dann noch mit der Customer
Objekt prüfen wir, ob es sich um ein String
. Nein, definitiv kein String
wir haben eine Customer
Objekt nicht ein String
Objekt. In diesem Fall gibt sie false zurück.
Es ist wirklich so einfach!