从这两个帖子中:
有几种方法可以检查一个对象是否是一个数组
variable instanceof Array
Array.isArray(variable)
我被告知第二种方法比第一种方法更好。有人能说出原因吗?
答案 0 :(得分:4)
在某些情况下obj instanceof Array
可能为false,如果obj
为Array
,则为该事件。
但是,在某些边缘情况下,您必须小心使用instanceof, 特别是如果你正在写一个图书馆,所以控制较少/ 了解它将运行的环境。问题是 如果您在多窗口环境中工作(框架, iframes),您可能会收到另一个日期d(例如) 窗口,在这种情况下,d instanceof Date将为false - 因为d prototype是另一个窗口中的Date.prototype,而不是 运行代码的窗口中的Date.prototype。在大多数情况下 你不关心的案例,你只想知道它是否全部 日期内容,以便您可以使用它。
此示例也适用于数组对象,依此类推。
ECMAScript标准建议Object
类的标准方法是使用toString
中的Object.prototype
方法,isArray(variable)
在内部使用它。