which is the best method used for checking isarray
本问题已经有最佳答案,请猛点这里访问。
我想检查一个变量是数组吗?
为了获得更好的性能,使用哪种方法是最好的。
或
大家伙(jQuery,下划线)这样做:
1 2 3 | isArray = Array.isArray || function(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; }; |
但是,这些不是你要找的机器人,你实际上根本不需要。不要"检查"你的变量-只要知道它们。
array.isarray更适合使用。
还要检查这个被认为有害的
The problems arise when it comes to scripting in multi-frame DOM
environments. In a nutshell, Array objects created within one iframe
do not share [[Prototype]]’s with arrays created within another
iframe. Their constructors are different objects and so both
instanceof and constructor checks fail:
另外,你可以检查两个之间的速度变化,你会发现Isarray相对更快。
下面是一个检查以下内容的链接:-array.is array vs instanceof array
以下代码用于检查速度变化:
1 2 3 4 5 | Benchmark.prototype.setup = function() { var a = [1, 2, 3]; var s = 'example'; var f = false; }; |
使用array.isarray:
1 | (Array.isArray(a) && (Array.isArray(s) || Array.isArray(f))); |
它的运行速度接近25255693次/秒。
现在使用instanceof:-
1 | (a instanceof Array && (s instanceof Array || f instanceof Array)); |
它的运行速度接近21594618次/秒
例如,instanceof比使用isarray慢15%。