检查是否是对象

时间:2013-02-27 02:39:42

标签: javascript

我需要检查变量是否是纯Object实例。例如:HTMLElement是 instanceof 对象。但我真的需要检查它是否只是 一个对象,如{a: true, b: false}。它不能验证数组。

注意:如果更好的话,我可以使用Chrome的新功能。

2 个答案:

答案 0 :(得分:8)

检查构造函数。 Seems to work in all browsers

if (a.constructor === Object)
// Good for arrays
([]).constructor === Object => false
// Good for HTMLElements
document.body.constructor === Object => false

答案 1 :(得分:2)

var proto = Object.getPrototypeOf(obj);

var protoproto = Object.getPrototypeOf(proto);

if (proto === Object.prototype && protoproto === null) {
    //plain object
}

如果您要使用null原型创建对象,则可以删除protoproto,并将protoObject.prototype或{{1}进行比较}。

这样做的危险在于它不会防止被null本身传递,可能会导致Object.prototype的意外延长。


这样更短更安全:

Object.prototype