如何在 JavaScript 中检查变量是否为对象?
大家好!我是 JavaScript 新手,在检查数据类型时遇到了问题。我需要编写一个函数,它接受一个参数并检查它是否为对象(不是数组,不是 null,不是原始类型)。
我尝试使用 `typeof`,但它对数组和 `null` 返回 `"object"`,这不符合我的需求。示例如下:
```javascript
function isObject(value) {
return typeof value === 'object';
}
console.log(isObject({})); // true — 正确
console.log(isObject([])); // true — 但应该是 false,这是数组
console.log(isObject(null)); // true — 但应该是 false,null 不是对象
console.log(isObject(function(){})); // false — 这是函数,也不应被视为对象
```
我尝试添加 `Array.isArray()` 检查,但这不能解决 `null` 的问题。我还阅读了关于 `instanceof Object` 的内容,但它对 `null` 也不起作用,并且可能对来自其他框架(如 iframe)的对象产生误报。
请告诉我如何正确且一