экземпляр
Операнд левой стороны (LHS) - это фактический объект, проверяемый для операнда правой стороны (RHS), который является фактическим конструктором класса. Основное определение:
Checks the current object and returns true if the object
is of the specified object type.
Вот несколько хороших примеров и пример взят непосредственно с сайта разработчиков Mozilla:
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)
Стоит упомянуть, что instanceof
принимает значение true, если объект наследуется от прототипа класса:
var p = new Person("Jon");
p instanceof Person
То есть p instanceof Person
верно, поскольку p
наследуется от Person.prototype
.
По запросу OP
Я добавил небольшой пример с примерами кода и объяснением.
Когда вы объявляете переменную, вы даете ей определенный тип.
Например:
int i;
float f;
Customer c;
Выше показаны некоторые переменные, а именно i
, f
и c
. Это integer
, float
и определенный пользователем Customer
тип данных. Типы, подобные приведенным выше, могут быть для любого языка, а не только для JavaScript. Однако с помощью JavaScript, когда вы объявляете переменную, вы явно не определяете тип, var x
, x может быть числом / строкой / типом данных, определяемым пользователем. Итак, что делает instanceof
, это проверяет объект, чтобы увидеть, относится ли он к указанному типу, поэтому мы могли бы сделать сверху Customer
объект:
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!
Выше мы видели, что c
был объявлен с типом Customer
. Мы обновили его и проверили, относится ли он к типу Customer
или нет. Конечно, вернет истину. Затем, все еще используя объект Customer
, мы проверяем, является ли он String
. Нет, определенно не String
, мы создали Customer
объект, а не String
объект. В этом случае возвращается false.
Это действительно так просто!
person
JonH
schedule
15.03.2010
"foo" instanceof String
= ›false,1 instanceof Number
=› false,{} instanceof Object
= ›false. Чего-чего?! - person morbusg   schedule 19.11.2013"foo" instanceof String => false
правильный, потому чтоtypeof "foo" == 'string'
.new String("foo") instanceof String => true
, потому чтоtypeof String == 'function'
- вы должны относиться к функции как к классу (определение класса). Переменная становитсяinstanceof
некоторымfunction
(классом), когда вы назначаете ее какvar v = new AnythingWhatTypeofEqualsFunction()
. То же самое и с1
.typeof 1 == 'number'
- 'число' не 'функция' :) Далее -{} instanceof Object
этоTRUE
в узле и современных браузерах - person fider   schedule 12.12.2013({}) instanceof Object
вернетtrue
. Фактически, написанный вами код выдаст вам ошибку. - person DDM   schedule 17.08.2014typeof String == 'function'
» - Вы не ошиблись?typeof new String("") === "object"
. Вот почемуnew String("") instanceof String
этоtrue
.String instanceof Function
, но неString instanceof String
. Кстати,"" instanceof String
бытьfalse
имеет смысл, потому что""
не является экземпляром. - person Sebastian Simon   schedule 15.03.2021