这是一种可接受的方法来确定对象是否是JavaScript中的数组?

我经常使用这段代码来确定数组是否真的是一个数组……

Object.prototype.toString.call(array) == '[object Array]'

我最近开始将回调测试从typeof callback ==’function’更改为callback instanceof Function,因为我读到Safari和Chrome会告诉你一个正则表达式文字是一个使用前者的函数(当我测试它时它会这样做).

现在,我决定检查这段代码,看看我是否可以替换上面的详细代码……

array instanceof Array

有效.

Comparison of both on jsFiddle.

那么,后一种方法有什么问题吗?我假设可能是因为第一个代码示例在Google中出现得更频繁.

使用instanceof作为数组的两个问题是:

>当数组来自另一个窗口或框架时返回false
>如果已覆盖Array构造函数,则中断

以下是kangax的一篇文章,我第一次看到你的第一个技术(也用于jQuery):http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/

相关文章
相关标签/搜索