为了检查一个元素是否是 JavaScript 中的数组,我一直使用 Crockford 的函数(The Good Parts 第 61 页):
var is_array = function (value) {
return value &&
typeof value === 'object' &&
typeof value.length === 'number' &&
typeof value.splice === 'function' &&
!(value.propertyIsEnumerable('length'));
}
但如果我没记错的话,最近 Google 的某个人找到了一种测试 JavaScript 数组的新方法,但我就是不记得是从哪里读到的以及函数是如何运行的。
谁能告诉我他的解决方案?
[更新]
显然发现这一点的来自谷歌的人叫做 Mark Miller .
现在我还从 this post 中读到了它他的解决方案也很容易崩溃:
// native prototype overloaded, some js libraries extends them
Object.prototype.toString= function(){
return '[object Array]';
}
function isArray ( obj ) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
var a = {};
alert(isArray(a)); // returns true, expecting false;
那么,我想问,有什么方法可以真正检查数组的有效性吗?
最佳答案
我相信你正在寻找
Object.prototype.toString.call(value) === "[object Array]";
这是 jQuery 用来检查传递的参数值是函数还是数组对象的方法。在某些浏览器特定实例中,使用 typeof
不会产生正确的结果
关于javascript - 在 Javascript 中测试元素是否为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759375/