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

ES6中Object()与new Object()的区别及MDN相关疑问

Object() vs new Object() 在ES6中的差异

两者的行为在大多数场景下重合,但在传入原生ECMAScript对象时会出现核心差异,具体拆解如下:

1. 无参数/传入null/undefined

两种写法完全一致,都会返回一个全新的空普通对象,原型指向Object.prototype:

// 无参数
Object.prototype.isPrototypeOf(Object()); // true
Object.prototype.isPrototypeOf(new Object()); // true
Object() === new Object(); // false(每次调用都创建新对象)

// 传入null/undefined
Object(null) instanceof Object; // true
new Object(undefined) instanceof Object; // true

2. 传入原始类型值(string/number/boolean/symbol/bigint)

两种写法都会返回对应原始类型的包装对象,行为完全一致:

Object('hello') instanceof String; // true
new Object(123) instanceof Number; // true

// 包装对象可调用对应类型的方法
Object('foo').toUpperCase(); // "FOO"
new Object(45.6).toFixed(0); // "46"

3. 传入原生ECMAScript对象(数组、函数、内置实例等)

这是两者唯一的关键差异点:

  • Object(obj):直接返回原对象本身,新变量与原变量指向同一个内存地址,属于引用传递。
  • new Object(obj):创建一个全新的独立对象,这个新对象的原型链、自有属性与传入对象完全一致,但和原对象是不同的引用。

示例代码:

const arr = [1, 2, 3];

// Object()调用:引用原对象
const objFromObject = Object(arr);
console.log(objFromObject === arr); // true
objFromObject.push(4);
console.log(arr); // [1,2,3,4](原数组被修改)

// new Object()调用:创建新对象
const objFromNewObject = new Object(arr);
console.log(objFromNewObject === arr); // false
objFromNewObject.push(5);
console.log(arr); // [1,2,3,4](原数组不受影响)
console.log(objFromNewObject); // [1,2,3,4,5](新对象独立修改)
console.log(objFromNewObject instanceof Array); // true(原型继承自Array.prototype)

再看函数场景:

const fn = () => console.log('test');
const fn1 = Object(fn);
const fn2 = new Object(fn);

console.log(fn1 === fn); // true
console.log(fn2 === fn); // false
fn2(); // 输出'test'(新对象继承原函数的行为)

4. 传入宿主对象(如浏览器DOM元素)

对于宿主对象(比如document.body),Object(hostObj)直接返回原对象;new Object(hostObj)的行为取决于宿主环境实现,通常会创建一个复制了原对象属性和原型链的新对象。

总结

  • 处理原始类型、null/undefined时,两者无差异;
  • 处理原生对象时,Object()返回原引用,new Object()生成独立的克隆对象;
  • 日常开发中,new Object()的使用场景极少,更推荐Object()或对象字面量{}语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:06:25