检查值是否为普通对象字面量

时间:2021-07-02 06:42:28

标签: javascript types javascript-objects

已经有一个类似的问题,它的answer是:

typeof yourVariable === 'object' && yourVariable !== null

但是,这也将包括 document.body 之类的 HTML 元素。有没有办法检测一个值是否是一个普通对象?

编辑:“普通对象”是指“用户创建的”对象。例如,我不想匹配类实例或 DOM 元素。正如@VLAZ 在评论中建议的那样,只是用作散列的对象。

1 个答案:

答案 0 :(得分:0)

我的猜测是还要检查值的构造函数是否为 Object。不过,这是否有任何潜在问题?

function check(value) {
  return typeof value === 'object' && value !== null && value.constructor === Object;
}

console.log(check({foo: 42}));
console.log(check(document.body));