You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中万物皆对象,为何typeof检测Object返回function?

为什么typeof Object返回'function'

JavaScript里流传的「万物皆对象」是对语言特性的粗糙简化,本身并不严谨。JS存在独立的原始值类型,数字、字符串、布尔值、null、undefined、Symbol、BigInt这些都不属于对象范畴。
你用typeof检测的Object,本身不是普通对象实例,它是JS引擎内置的构造函数,作用就是生成普通对象实例。按照typeof运算符的既定规则,检测函数类型的值时会统一返回'function',所以你看到的运行结果完全符合设计逻辑,不是异常。

可以运行下面的代码理清两者的关系:

// 检测内置Object构造函数本身的类型
console.log(typeof Object); // function
// 用Object构造函数创建一个普通对象实例
const normalObj = new Object();
console.log(typeof normalObj); // object
// 函数本质是特殊的对象,支持挂载自定义属性
Object.testAttr = 'demo';
console.log(Object.testAttr); // demo

补充说明:typeof存在早期语言设计留下的历史缺陷,比如检测null时会错误返回'object',它只适合做基础类型的快速粗筛,如果要精准判断值的具体类型,更推荐使用Object.prototype.toString.call(目标值)的方案。

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 04:48:23