What's the 'right' way to tell if an object is an Array?
function isArray(o) { ??? }
What's the 'right' way to tell if an object is an Array?
function isArray(o) { ??? }
The best way:
function isArray(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
}
The ECMAScript 5th Edition Specification defines a method for that, and some browsers, like Firefox 3.7alpha, Chrome 5 Beta, and latest WebKit Nightly builds already provide a native implementation, so you might want to implement it if not available:
if (typeof Array.isArray != 'function') {
Array.isArray = function (obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
};
}
You should be able to use the instanceof
operator:
var testArray = [];
if (testArray instanceof Array)
...
This is what I use:
function is_array(obj) {
return (obj.constructor.toString().indexOf("Array") != -1)
}
function typeOf(obj) {
if ( typeof(obj) == 'object' )
if (obj.length)
return 'array';
else
return 'object';
} else
return typeof(obj);
}
You can take take Prototype library definition of method Object.isArray() which test it :
function(object) {
return object != null && typeof object == "object" &&
'splice' in object && 'join' in object;
}