JavaScript 'new' 关键字,带或不带 '()'
javascript `new` keyword with or without `()`
foo = new Foo(); // this one I use all the time
与
foo = new Foo; // I don't understand what this one does
我最近看到一些代码使用 new Array
现在()
.不知道你可以这样做。有什么区别,何时使用未执行的新对象?
它的意思是一样的。如果不指定参数(括号),它将使用空参数列表调用构造函数。从 EcmaScript §11.2.2 中,new
运算符:
生产
NewExpression : new NewExpression
评估如下:
- 。
- 返回在构造函数上调用
[[Construct]]
内部方法的结果,不提供任何参数(即,参数的空列表)。生产
MemberExpression : new MemberExpression Arguments
评估如下:
- 。
- 让 argList 成为评估参数的结果,生成一个 参数值的内部列表 (11.2.4)。
- 。
- 返回调用 [[构造]] 内部方法的结果 构造函数,提供列表 argList 作为参数值。
它们都做同样的事情,尽管从样式的角度来看,您应该使用new Foo();
以提高可读性。
您还需要构造函数参数的括号:new Foo(options);
两种语法都做同样的事情。这纯粹是风格问题。
我建议你通过你的代码库坚持一个。始终使用括号是样式指南中最受欢迎的形式,因为在传递选项时它是一致的。
相关文章:
- 如何在不使用 new 关键字的情况下从函数创建对象
- “new”关键字是在构造对象时自动设置“constructor”属性的唯一方法吗
- 使用“new”关键字创建的对象和使用“Object.create”创建的对象给出不同的结果
- JavaScript:古代代码使用“new”关键字启动简单对象.为什么
- 将 JavaScript new 关键字与可变长度参数数组一起使用
- 如何判断对象是使用“Object.create”还是使用文字语法/“new”关键字创建的
- Javascript [this] 关键字绑定与 new
- 在 anthor object 中使用 Object 方法,而无需在 javascript 中使用 new 关键字
- 使用“new”关键字的Javascript函数表达式视为“静态”是否正确?
- 在javascript中使用“new”关键字的替代方案是什么?
- JavaScript 'new' 关键字,带或不带 '()'
- Javascript Module Pattern 和 new 关键字
- Javascript中“new”关键字的限制
- javascript初始化一个没有new关键字的对象
- 闭包可以使用new关键字和区别,例如,在创建新对象/类时
- 函数中的Javascript“new”关键字
- JavaScript原型继承和“new”关键字
- 向使用javascript中的new function关键字创建的函数传递参数
- 在Javascript中使用instanceof自定义对象而不使用new关键字
- 如何给一个对象's与javascript中的new关键字的属性和方法