Object.prototype.toString.call() and PhantomJS

Posted on

When I first came across that technique, I thought it was cool, smart and unbreakable.

Of course the first thing I did was to abuse it:

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

There is no way I could screw this up right? But then I ran my unit tests with PhantomJS because you know… continuous integration and all that sort of things.

The truth was quite hard to swallow: [object DOMWindow].

In your DOM face!

There are some good explanations out there but I could also simply have done this:

arg === undefined

Leave a Reply

Your email address will not be published. Required fields are marked *