instanceof
procura o constructor.prototype na cadeia de protótipos do objeto fornecido. Portanto, ao compreender a herança prototípica, podemos manipular essa comparação.
n = new Number()
n instanceof Number # true
n.__proto__ = String.prototype
n instanceof Number # false
n.instanceof String # true
Isso se torna útil ao escrever testes para uma instanceof
verificação de um objeto complexo que você não deseja recriar para o teste. Um exemplo de método e especificações Jasmine para ele estão abaixo:
checkObject (input) ->
if input instanceof ObjectA
'its ObjectA!'
else if input instanceof ObjectB
'its ObjectB!'
describe 'checkObject', ->
it 'returns correctly based on object passed' , ->
o = {}.__proto__ = ObjectA.prototype
expect(checkObject o).toEqual 'its ObjectA!'
o = {}.__proto__ = ObjectB.prototype
expect(checkObject o).toEqual 'its ObjectB!'