1

从这里开始这个问题:检查未定义

我想知道一个对象是否是 an Array,现在我需要测试一个 Object 是否专门是 anObject而不仅仅是 an 的子类Object

因为此时Array如果检查它是否是 an 的实例,则会返回 true Object。还有其他类型可以评估为真吗?

在此处输入图像描述

额外信息

我发现,如果您调用toString具有Array一个字符串元素的函数,它会解析为该字符串元素,而不是"[object Array]"因此您需要注意这一点。例如:

["str1", "str2"].toString() === "[object Array]"

["str1"].toString() === "str1"
4

1 回答 1

2

像这样测试:

if ({}.toString.call(obj) == '[object Object]') {
  // is object
}

if ({}.toString.call(obj) == '[object Array]') {
  // is array
}

obj是任何对象。与 , 等对象相同RegExp...Date在旧 IE 中,您可能需要这样做({})才能使其正常工作。

演示:http: //jsbin.com/exofup/2/edit

于 2013-03-18T03:50:02.803 回答