instanceofКлючевое слово в JavaScript может быть довольно запутанным , когда он впервые встречается, так как люди склонны думать , что JavaScript не является объектно-ориентированный язык программирования.
- Что это?
- Какие проблемы это решает?
- Когда это уместно, а когда нет?
"foo" instanceof String=> ложь, 1 instanceof Number=> ложь, {} instanceof Object=> ложь. Чего-чего?!
"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в узле и современных браузерах
({}) instanceof Objectвернется true. На самом деле код, который вы написали, выдаст вам ошибку.