A instanceof
palavra-chave em JavaScript pode ser bastante confusa quando é encontrada pela primeira vez, pois as pessoas tendem a pensar que o JavaScript não é uma linguagem de programação orientada a objetos.
- O que é isso?
- Que problemas ele resolve?
- Quando é apropriado e quando não?
"foo" instanceof String
=> falso, 1 instanceof Number
=> falso, {} instanceof Object
=> falso. Diga o quê?!
"foo" instanceof String => false
está correto, porque typeof "foo" == 'string'
. new String("foo") instanceof String => true
, porque typeof String == 'function'
- você deve tratar a função como classe (definição de classe). A variável se torna instanceof
alguma function
(classe) quando você a atribui como var v = new AnythingWhatTypeofEqualsFunction()
. O mesmo se aplica a 1
. typeof 1 == 'number'
- 'number' não é 'function' :) Em seguida - {} instanceof Object
está TRUE
no nó e nos navegadores modernos
({}) instanceof Object
retornará true
. De fato, o código que você escreveu causará um erro.