instanceof Array 比 JavaScript 中的 isArray 更好吗?

zan*_*ngw 4 javascript arrays instanceof

从那两个帖子:

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

  1. variable instanceof Array

  2. Array.isArray(variable)

有人告诉我,第二种方法比第一种方法好。有没有人能说出它的原因?

lev*_*evi 7

在某些情况下obj instanceof Array可能是假的,如果obj是一个事件Array

但是,在某些边缘情况下,您必须小心使用 instanceof,特别是如果您正在编写一个库,因此对其运行环境的控制/知识较少。问题是,如果您在多窗口环境(frames、iframes)中工作,您可能会从另一个窗口收到一个 Date d(例如),在这种情况下 d instanceof Date 将是假的——因为 d 的原型是另一个窗口中的 Date.prototype,而不是运行代码的窗口中的 Date.prototype。在大多数情况下,您并不关心,您只想知道它是否包含所有日期内容,以便您可以使用它。

资料来源:漂亮的片段

这个例子也适用于数组对象等等。

ECMAScript 标准建议的查找 an 类的标准方法Object是使用toStringfrom的方法Object.prototypeisArray(variable)在内部使用它。