我需要检查变量是否是纯 Object 实例。例如:一个 HTMLElement 是instanceof Object。但我真的需要检查它是否只是一个对象,就像{a: true, b: false}
是。它不能验证数组。
注意:如果更好的话,我可以使用 Chrome 的更新功能。
我需要检查变量是否是纯 Object 实例。例如:一个 HTMLElement 是instanceof Object。但我真的需要检查它是否只是一个对象,就像{a: true, b: false}
是。它不能验证数组。
注意:如果更好的话,我可以使用 Chrome 的更新功能。
检查构造函数。似乎适用于所有浏览器
if (a.constructor === Object)
// Good for arrays
([]).constructor === Object => false
// Good for HTMLElements
document.body.constructor === Object => false
var proto = Object.getPrototypeOf(obj);
var protoproto = Object.getPrototypeOf(proto);
if (proto === Object.prototype && protoproto === null) {
//plain object
}
如果您要使用null
原型创建对象,则可以去掉protoproto
, 并与proto
orObject.prototype
进行比较null
。
这样做的危险在于它不能防止Object.prototype
自己被传递,可能会导致Object.prototype
.
像这样更短更安全:
var proto = Object.getPrototypeOf(obj);
if (proto && Object.getPrototypeOf(proto) === null) {
// plain object
}