检查对象是否是对象文字

时间:2013-03-18 03:48:47

标签: javascript

在这里继续这个问题:Checking for undefined

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

因为如果检查ArrayObject的实例,那么toString会返回true。还有其他类型会评估为真吗?

enter image description here

额外信息

我发现如果你在Array上调用"[object Array]"有一个字符串元素,它会解析为该字符串元素,而不是["str1", "str2"].toString() === "[object Array]" 所以你需要小心。例如:

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

但是

{{1}}

1 个答案:

答案 0 :(得分:2)

像这样测试:

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

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

obj是任何对象。与RegExpDate等对象相同...在旧版IE中,您可能需要执行({})才能使其正常工作。

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