JavaScript中new Foo和new Foo()的区别是什么?

10

我知道在C++中两者的区别,但不知道在JS中是否也相同。


我问这个问题的原因是因为在我的代码中,人们在许多地方使用了“new Foo”,当我通过JSLint运行它时,它抛出了一个错误,所以我只是想知道语句是否有问题。 - Ankit
3个回答

10

根据我的经验,除了使用 new Foo() 可以传递参数外,与使用 new Foo 没有区别。


6

以下是关于new的ECMAScript语言规范:

new NewExpression:

在Result(2)上调用[[Construct]]方法,不提供任何参数

new MemberExpression Arguments

在Result(2)上调用[[Construct]]方法,将Result(3)作为参数值列表提供。

问题在于构造函数是否接收任何参数。


-2

Foo() 调用一个函数,new Foo() 实例化一个类型为 foo 的对象。如果你已经定义了一个原型,那么在其中定义的所有方法和实例变量也会被实例化。

function Foo() {}

Foo.prototype = {
   myVar: 'Some val',
   sayFoo: function () {alert(this.myVar);}
}


var foo = new Foo();
foo.sayFoo();

这将会触发警报 'Some Val'。


1
我认为你误解了问题。他问的是var foo = new Foo();var foo = new Foo;之间的区别。我认为Tyler是正确的,它们是相同的。 - Mike M. Lin
啊,有道理,不知道为什么你不想使用括号...但确实如此。 - Zoidberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接