在JavaScript中,instanceof Array比isArray好吗?

时间:2015-02-28 07:23:32

标签: javascript arrays instanceof

从这两个帖子中:

有几种方法可以检查一个对象是否是一个数组

  1. variable instanceof Array

  2. Array.isArray(variable)

  3. 我被告知第二种方法比第一种方法更好。有人能说出原因吗?

1 个答案:

答案 0 :(得分:4)

在某些情况下obj instanceof Array可能为false,如果objArray,则为该事件。

  

但是,在某些边缘情况下,您必须小心使用instanceof,   特别是如果你正在写一个图书馆,所以控制较少/   了解它将运行的环境。问题是   如果您在多窗口环境中工作(框架,   iframes),您可能会收到另一个日期d(例如)   窗口,在这种情况下,d instanceof Date将为false - 因为d   prototype是另一个窗口中的Date.prototype,而不是   运行代码的窗口中的Date.prototype。在大多数情况下   你不关心的案例,你只想知道它是否全部   日期内容,以便您可以使用它。

来源:Nifty Snippets

此示例也适用于数组对象,依此类推。

ECMAScript标准建议Object类的标准方法是使用toString中的Object.prototype方法,isArray(variable)在内部使用它。