检查是否为对象
Check if is an Object
我需要检查一个变量是否是纯Object实例。例如:HTMLElement是对象的实例。但我真的需要检查它是否像{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
与Object.prototype
或null
进行比较。
这样做的危险在于,它不能防止Object.prototype
本身被传递,可能会导致Object.prototype
的意外扩展。
像这样更短更安全:
var proto = Object.getPrototypeOf(obj);
if (proto && Object.getPrototypeOf(proto) === null) {
// plain object
}
相关文章:
- 如何检查数组中的对象是否等于选项值
- 测试对象是否相等和/或对象是否有更多的关键点,但仍然与共同的关键点相等
- 确定javascript中的html表对象是否具有<colgroup>是否
- 验证对象是否为null Javascript/Angularjs
- 如何通过json对象选项卡中的Id来检查对象是否存在
- jQuery-检测选择对象是否添加或删除了选项
- 检查对象是否是mongo游标
- Three.js-如何检查对象是否在球体后面(不可见)
- 检查对象是否基于jquery对象
- 在JSON项上循环,无论JSON对象是否具有多个数组
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- Javascript如何确定两个对象是否相同
- 如何检查文字对象是否在 Javascript 数组中
- 检查对象是否已被推入数组 Js
- 变量/对象是否按值传递,为什么我不能在 javascript 中使用变量更改对象的属性
- JavaScript 如何检查包含数组的对象是否为空
- 嵌套对象是否被视为良好做法
- 在node.js/ssocket.io中,如何判断对象是否是套接字的实例
- 是否有跨浏览器和跨框架的方法来检查对象是否是HTML元素
- 有没有办法检查一个对象是否存在并且在一行中有一个子对象