以下是两篇文章的内容:
有几种方法可以检查一个对象是否为数组:
variable instanceof Array
Array.isArray(variable)
有人告诉我第二种方法比第一种更好。有谁能给出原因呢?
以下是两篇文章的内容:
有几种方法可以检查一个对象是否为数组:
variable instanceof Array
Array.isArray(variable)
有人告诉我第二种方法比第一种更好。有谁能给出原因呢?
obj
是一个 Array
,obj instanceof Array
也可能为 false。需要注意的是,在一些边缘情况下,使用 instanceof 时要小心,特别是当你在编写库时,并且对将来代码运行环境的控制 / 知识较少时。问题在于,如果你在多窗口环境(框架、iframe)中工作,则可能会从另一个窗口接收到一个 Date d(例如),此时 d instanceof Date 将返回 false,因为d的原型是在其他窗口中的 Date.prototype,而不是在你的代码运行的窗口中的 Date.prototype。大多数情况下,你并不关心这个问题,只想知道它是否具有所有的 Date 属性,以便你可以使用它。此外,ECMAScript 标准建议使用 Object.prototype 的 toString 方法来查找 Object 的类,isArray(variable) 内部也使用了该方法。