Object.prototype.toString.call () e PhantomJS

Quando me deparei com essa técnica, achei que era legal, inteligente e inquebrável.

Claro que a primeira coisa que fiz foi abusar dela:

function isUndefined(arg) {
return Object.prototype.toString.call(arg) === '[object Undefined]';
}

Não tem como estragar tudo certo? Mas então eu executei meus testes de unidade com PhantomJS porque você sabe … integração contínua e todo esse tipo de coisa.

A verdade era bem difícil de engolir: [objeto DOMWindow] .

Em sua cara DOM!

Existem algumas boas explicações por aí, mas eu também poderia simplesmente ter feito isso:

arg === undefined