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