问题描述
typeof yourVariable === 'object' && yourVariable !== null
但是,这也将包括 document.body
之类的 HTML 元素。有没有办法检测一个值是否是一个普通对象?
编辑:“普通对象”是指“用户创建的”对象。例如,我不想匹配类实例或 DOM 元素。正如@VLAZ 在评论中建议的那样,只是用作散列的对象。
解决方法
我的猜测是还要检查值的构造函数是否为 Object
。不过,这是否有任何潜在问题?
function check(value) {
return typeof value === 'object' && value !== null && value.constructor === Object;
}
console.log(check({foo: 42}));
console.log(check(document.body));