判断对象是否为数组的“正确”方法是什么?
function isArray(o){ ??? }
答案 0 :(得分:9)
最好的方法:
function isArray(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
}
ECMAScript 5th Edition Specification为此定义了一种方法,some browsers就像Firefox 3.7alpha,Chrome 5 Beta和最新的WebKit Nightly版本已经提供了本机实现,因此您可能希望实现它不可用:
if (typeof Array.isArray != 'function') {
Array.isArray = function (obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
};
}
答案 1 :(得分:1)
您应该可以使用instanceof
运算符:
var testArray = [];
if (testArray instanceof Array)
...
答案 2 :(得分:1)
jQuery解决了很多这样的问题:
jQuery.isArray(obj)
答案 3 :(得分:0)
这就是我使用的:
function is_array(obj) {
return (obj.constructor.toString().indexOf("Array") != -1)
}
答案 4 :(得分:0)
function typeOf(obj) {
if ( typeof(obj) == 'object' )
if (obj.length)
return 'array';
else
return 'object';
} else
return typeof(obj);
}
答案 5 :(得分:0)
您可以对方法Object.isArray()进行测试的Prototype库定义:
function(object) {
return object != null && typeof object == "object" &&
'splice' in object && 'join' in object;
}