javascript`new`关键字有或没有`()`

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

本问题已经有最佳答案,请猛点这里访问。
1
foo = new Foo();  // this one I use all the time

VS

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

我最近看到了一些使用new Array和现在()的代码。 不知道你能做到这一点。 有什么区别,什么时候我会使用未执行的新对象?


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

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


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

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


这意味着完全相同的事情。 如果未指定参数(括号),则使用空参数列表调用构造函数。 从EcmaScript§11.2.2,new运算符:

The production NewExpression : new NewExpression is evaluated as follows:

  • Return the result of calling the [[Construct]] internal method on constructor, providing no arguments (that is, an empty list of arguments).

The production MemberExpression : new MemberExpression Arguments is evaluated as follows:

  • Let argList be the result of evaluating Arguments, producing an
    internal list of argument values (11.2.4).
  • Return the result of calling the [[Construct]] internal method on
    constructor, providing the list argList as the argument values.