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

为何新建对象的原型是构造函数而非Object或Object.prototype?

关于对象原型的误解澄清

首先明确:用let testObject = {}创建的对象,它的原型就是Object.prototype,你觉得它是构造函数,大概率是判断原型的方式出了问题。

关键概念区分

  • Object是构造函数,用于创建普通对象;
  • Object.prototype是所有普通对象的原型(Object.create(null)创建的对象除外);
  • 对象的原型可以通过标准方法Object.getPrototypeOf()获取,浏览器中也支持非标准的__proto__属性直接访问。

你可能的判断误区

如果你是通过testObject.__proto__.constructor来判断原型,那这个值确实是Object构造函数,但这不是原型本身——constructor是Object.prototype上的一个属性,它指向的是创建该原型所属对象的构造函数,也就是Object。

验证正确原型的代码示例

let testObject = {};
// 标准方法验证
console.log(Object.getPrototypeOf(testObject) === Object.prototype); // 输出 true
// 非标准但常用的__proto__验证
console.log(testObject.__proto__ === Object.prototype); // 输出 true

额外补充

{}语法和new Object()完全等价,它们创建的对象都会把Object.prototype作为原型。而Object构造函数本身的原型是Function.prototype,别把构造函数和原型对象搞混。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:04:56