Re: isElement - determining if an object is an element



On Jul 30, 11:52 am, "Aaron Gray" <ang.use...@xxxxxxxxx> wrote:

[snip]

So here's a more effiecient version

     if (!isIE)
        var isElement = function( o)
        {
             return o instanceof Element
        }
    else
        var isElement = function( o)
        {
             return o && o.nodeType === 1 && o.tagName !== undefined
        }

As per usual any critisms are welcome :)

The double function expression is unnecessary.

It could be rewritten like so:

var isElement = (function(){
var el = document.createElement('div'), fn;
if (el instanceof Element) {
fn = function(o) {
return o instanceof Element;
}
}
else {
fn = function(o) {
return o && typeof 'nodeType' in o && o.nodeType === 1;
}
}
el = null;
return fn;
})();

We don't perform such branching in prototype.js to avoid
inconsistencies across browsers.

isElement(document.createElement('div')); // true in IE and FF
isElement({ nodeType: 1 }); // true in IE, but false in FF

--
kangax
.



Relevant Pages