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

JavaScript OOP疑问:new Object省略括号为何能正常创建对象?

为什么JavaScript里new Object不带括号也能正常运行

这个问题问得好!这是JavaScript里容易让人困惑的语法细节之一,咱们一步步拆解清楚:

简短结论

当使用new操作符调用无参数的构造函数时,括号是完全可选的。JavaScript引擎会自动把new Object解析成和new Object()等价的形式。

背后的原因

这种行为是ECMAScript规范明确规定的。语言允许在构造函数不需要传递参数时省略括号,算是一种语法糖,让代码更简洁(不过关于可读性的看法因人而异)。

其他内置构造函数也有同样的特性:

  • new Array 和 new Array() 效果完全一致
  • new Date 和 new Date() 运行结果相同
  • new RegExp 和 new RegExp() 也能正常工作

需要注意的关键点

虽然无参时可以省略括号,但也有一些限制:

  • 如果构造函数需要传参,括号不能省略:new Array(5)是合法的,但new Array 5会抛出语法错误——JavaScript无法在没有括号的情况下解析参数。
  • 可读性优先:尽管语法允许省略,但很多开发者更倾向于保留括号来提升代码清晰度。尤其是在团队协作中,明确的语法能避免其他阅读代码的人产生困惑。

和new操作符执行步骤的关联

你提到的new操作符三个核心步骤(创建空对象、绑定this到新对象、返回新对象),不管带不带括号都会完整执行。当你写new Object时,引擎在解析阶段会自动补上空括号,所以构造函数的运行流程和带括号时完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:27:30