对象字面量({})是创建普通对象的首选方式,因其语法简洁、执行高效且无需函数调用;new Object() 需经历完整构造流程,性能略低且可读性差,仅在极少数动态构造场景中考虑。

对象字面量({})和 new Object() 都能创建普通对象,但它们在底层机制、性能表现和工程实践中差异明显。字面量是日常开发的绝对首选;new Object() 仅在极少数动态构造场景中才需考虑。
语法与可读性
字面量写法直观简洁,属性定义一目了然:
const user = { name: "Tom", age: 30 };
new Object() 需额外步骤,要么分步赋值,要么传参:
const user = new Object(); user.name = "Tom"; user.age = 30;
或const user = new Object({ name: "Tom", age: 30 });
后者虽可简化,但语义上仍是“调用构造函数”,不如字面量自然直接。
执行过程不同
字面量不触发任何函数调用,引擎直接分配内存并填充属性。
new Object() 则完整走完 new 的四步流程:
- 创建空对象
- 将该对象的
__proto__指向Object.prototype - 绑定
this并执行Object构造函数 - 返回结果(通常就是新对象)
这个过程涉及作用域查找、堆栈管理、原型链设置等开销,哪怕微小,也比字面量多一层抽象。
性能与内存行为
现代 JS 引擎对字面量做了深度优化,比如常量折叠、内联缓存等。
new Object() 因为是函数调用,需解析标识符 Object、检查是否被重写、准备执行上下文,再进入构造逻辑——这些都会带来轻微但可测的延迟。
高频创建对象时(如渲染循环、数据转换),字面量的累积优势更明显;单次使用虽无感知,但习惯成自然。
实际用途建议
绝大多数情况直接用 {}:
- 配置对象、API 参数、临时数据结构
- 与解构、展开运算符配合(
{...obj}) - 模块导出、React props、Vue data
new Object() 几乎没有不可替代的场景。唯一可能用到的是需要显式控制构造函数调用逻辑(例如代理拦截、定制初始化),但这属于高级模式,日常无需关注。
不复杂但容易忽略:坚持用字面量,既是性能选择,也是代码清晰度的体现。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











