0
foo = new Foo();  // this one I use all the time

对比

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

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

4

3 回答 3

1

这意味着同样的事情。如果您不指定参数(括号),它会调用带有空参数列表的构造函数。来自EcmaScript §11.2.2,运算new

生产NewExpression : new NewExpression评估如下:

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

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

  • …</li>
  • 令 argList 为评估参数的结果,生成参数值的内部列表 (11.2.4)。
  • …</li>
  • 返回在构造函数上调用 [[Construct]] 内部方法的结果,提供列表 argList 作为参数值。
于 2013-09-19T15:47:05.583 回答
1

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

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

于 2013-09-19T15:47:08.943 回答
1

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

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

于 2013-09-19T15:47:29.307 回答