在这里继续这个问题:Checking for undefined
我想知道一个对象是否是Array
,现在我需要测试一个Object是否特别是Object
而不仅仅是Object
的子类
因为如果检查Array
是Object
的实例,那么toString
会返回true。还有其他类型会评估为真吗?
额外信息
我发现如果你在Array
上调用"[object Array]"
有一个字符串元素,它会解析为该字符串元素,而不是["str1", "str2"].toString() === "[object Array]"
所以你需要小心。例如:
["str1"].toString() === "str1"
但是
{{1}}
答案 0 :(得分:2)
像这样测试:
if ({}.toString.call(obj) == '[object Object]') {
// is object
}
if ({}.toString.call(obj) == '[object Array]') {
// is array
}
obj
是任何对象。与RegExp
,Date
等对象相同...在旧版IE中,您可能需要执行({})
才能使其正常工作。