wystąpienie
Operand po lewej stronie (LHS) to rzeczywisty testowany obiekt na operand po prawej stronie (RHS), który jest rzeczywistym konstruktorem klasy. Podstawowa definicja to:
Checks the current object and returns true if the object
is of the specified object type.
Oto kilka dobrych przykładów i oto przykład zaczerpnięty bezpośrednio ze strony dewelopera Mozilli :
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)
Jedną rzeczą, o której warto wspomnieć, jest instanceof
prawda, jeśli obiekt dziedziczy po prototypie klasy:
var p = new Person("Jon");
p instanceof Person
Jest to p instanceof Person
prawdą, ponieważ p
dziedziczy po Person.prototype
.
Na prośbę PO
Dodałem mały przykład z jakimś przykładem kodu i wyjaśnieniem.
Kiedy deklarujesz zmienną, nadajesz jej określony typ.
Na przykład:
int i;
float f;
Customer c;
Powyższy pokazać kilka zmiennych, a mianowicie i
, f
oraz c
. Typy są integer
, float
i zdefiniowane przez użytkownika Customer
typ danych. Typy takie jak powyższe mogą być dla dowolnego języka, nie tylko JavaScript. Jednak w JavaScript, kiedy deklarujesz zmienną, nie definiujesz jawnie typu var x
, x może być liczbą / ciągiem / typem danych zdefiniowanym przez użytkownika. Więc co instanceof
to jest sprawdzanie obiektu, aby zobaczyć, czy jest on określonego typu, więc z góry biorącCustomer
obiekt, który możemy zrobić:
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!
Powyżej widzieliśmy, że c
został zadeklarowany z typem Customer
. Zmieniliśmy go i sprawdziliśmy, czy jest typu, Customer
czy nie. Pewnie, że zwraca wartość true. Następnie nadal za pomocą Customer
obiektu sprawdzamy, czy jest to String
. Nie, zdecydowanie nie String
nowy Customer
obiekt nie String
przedmiot. W takim przypadku zwraca wartość false.
To naprawdę jest takie proste!