foo = new Foo(); // this one I use all the time
vs
foo = new Foo; // I don't understand what this one does
我最近看到一些代码使用new Array
,现在使用()
。不知道你能做到这一点。有什么区别,我何时会使用未执行的新对象?
答案 0 :(得分:1)
这意味着同样的事情。如果未指定参数(括号),则使用空参数列表调用构造函数。来自EcmaScript §11.2.2, The new
operator:
生产
NewExpression : new NewExpression
的评估如下:
- ...
- 返回在构造函数上调用
[[Construct]]
内部方法的结果,不提供参数(即参数的空列表)。生产
MemberExpression : new MemberExpression Arguments
的评估如下:
- ...
- 让argList成为评估Arguments的结果,产生一个 内部参数值列表(11.2.4)。
- ...
- 返回调用[[Construct]]内部方法的结果 构造函数,提供列表argList作为参数值。
答案 1 :(得分:1)
他们都做同样的事情,但从造型角度来看,你应该使用new Foo();
来提高可读性。
您还需要构造函数参数的括号:new Foo(options);
答案 2 :(得分:1)
两种语法都做同样的事情。这纯粹是风格问题。
我建议您通过代码库坚持使用。始终使用括号是样式指南中最常用的形式,因为它在传递选项时是一致的。