在JavaScript中,instanceof Array比isArray更好吗?

8

第二个在旧浏览器中不可用,但在可用的情况下,它会从iframes中获取Arrays,而instanceOf则无法识别。 - dandavis
1个回答

12
不一定。 有些情况下,即使 obj 是一个 Arrayobj instanceof Array 也可能为 false。需要注意的是,在一些边缘情况下,使用 instanceof 时要小心,特别是当你在编写库时,并且对将来代码运行环境的控制 / 知识较少时。问题在于,如果你在多窗口环境(框架、iframe)中工作,则可能会从另一个窗口接收到一个 Date d(例如),此时 d instanceof Date 将返回 false,因为d的原型是在其他窗口中的 Date.prototype,而不是在你的代码运行的窗口中的 Date.prototype。大多数情况下,你并不关心这个问题,只想知道它是否具有所有的 Date 属性,以便你可以使用它。此外,ECMAScript 标准建议使用 Object.prototype 的 toString 方法来查找 Object 的类,isArray(variable) 内部也使用了该方法。
来源:Nifty Snippets
这个例子同样适用于数组对象等等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接