A instanceofpalavra-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 => falseestá 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 instanceofalguma 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 Objectestá TRUEno nó e nos navegadores modernos
({}) instanceof Objectretornará true. De fato, o código que você escreveu causará um erro.