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 |
我最近看到了一些使用
两种语法都做同样的事情。 这纯粹是风格问题。
我建议你通过你的代码库坚持一个。 始终使用括号是样式指南中最常用的形式,因为它在传递选项时是一致的。
它们都做同样的事情,但从样式的角度来看,你应该使用
您还需要构造函数参数的括号:
这意味着完全相同的事情。 如果未指定参数(括号),则使用空参数列表调用构造函数。 从EcmaScript§11.2.2,
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.