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
. На самом деле код, который вы написали, выдаст вам ошибку.