JavaScript 'new' 关键字,带或不带 '()'

javascript `new` keyword with or without `()`

本文关键字:关键字 new JavaScript      更新时间:2023-09-26
foo = new Foo();  // this one I use all the time

foo = new Foo;   // I don't understand what this one does

我最近看到一些代码使用 new Array 现在().不知道你可以这样做。有什么区别,何时使用未执行的新对象?

它的意思是一样的。如果不指定参数(括号),它将使用空参数列表调用构造函数。从 EcmaScript §11.2.2 中,new运算符

生产NewExpression : new NewExpression评估如下:

  • 返回在构造函数上调用 [[Construct]] 内部方法的结果,不提供任何参数(即,参数的空列表)。

生产MemberExpression : new MemberExpression Arguments评估如下:

  • 让 argList 成为评估参数的结果,生成一个 参数值的内部列表 (11.2.4)。
  • 返回调用 [[构造]] 内部方法的结果 构造函数,提供列表 argList 作为参数值。

它们都做同样的事情,尽管从样式的角度来看,您应该使用new Foo();以提高可读性。

您还需要构造函数参数的括号:new Foo(options);

两种语法都做同样的事情。这纯粹是风格问题。

我建议你通过你的代码库坚持一个。始终使用括号是样式指南中最受欢迎的形式,因为在传递选项时它是一致的。