这是用于检查isarray的最佳方法
这个问题在这里已经有了答案:
大个子(Jquery,下划线)这样做:
isArray = Array.isArray || function(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
};
但是,这些不是你正在寻找你的机器人,实际上根本不需要这个。 不要“检查”你的变量 - 只要知道它们。
Array.IsArray会更好用。
还要检查这个被认为有害的instanceof
(或者如何编写一个健壮的isArray
)
在涉及多框架DOM环境中的脚本时会出现问题。 简而言之,在一个iframe中创建的Array对象不会与在另一个iframe中创建的数组共享[[Prototype]]。 它们的构造函数是不同的对象,所以instanceof和构造函数检查失败:
你也可以检查两者之间的速度变化,你会发现isArray比较快。
这里有一个链接来检查: - Array.isArray vs instanceof数组
以下代码用于检查速度变化:
<script>
Benchmark.prototype.setup = function() {
var a = [1, 2, 3];
var s = 'example';
var f = false;
};
</script>
使用Array.IsArray:
(Array.isArray(a) && (Array.isArray(s) || Array.isArray(f)));
它执行了近25,255,693次操作/秒
现在使用instanceof: -
(a instanceof Array && (s instanceof Array || f instanceof Array));
它执行了近21,594,618次操作/秒
即, instanceOf比使用IsArray慢15%。
链接地址: http://www.djcxy.com/p/19297.html