新F和新F()之间有什么不同?

时间:2012-03-29 10:12:24

标签: javascript constructor new-operator instance javascript-objects

考虑一下这个问题

function F(){}; //This is a Constructor function

谁能告诉我

之间有什么不同
var myInstance = new F; 

var myInstance = new F();

?无论如何,新的关键字execute会立即执行函数吗?

2 个答案:

答案 0 :(得分:5)

没有区别。来自Mozilla Docs

new constructor[([arguments])]

括号位于方括号内,表示它们是可选的。

答案 1 :(得分:0)

没有实际的区别,如果没有传递任何参数来简化语法,则可以省略paranthesis。

请注意,一些验证程序(如JSLint)会在您将其删除时报告警告,因为无论参数如何,始终使用相同的语法来调用构造函数,这些验证程序会更加一致。

如果你陷入这种懒惰的习惯,这个类似的例子会非常糟糕:

var one = myFunc;
var two = myFunc();

这是两个不同的变量,一个是函数引用,另一个是函数的返回值。