新的Foo和新的Foo()在javascript中有什么区别?

时间:2011-03-08 00:38:23

标签: javascript

我知道C ++中两者之间的区别,但不知道JS是否也是一样

3 个答案:

答案 0 :(得分:10)

根据我的经验,除new Foo之外没有任何区别,您无法传递任何参数,而new Foo()则可以。

答案 1 :(得分:6)

来自new的ECMAScript语言规范:

  

新的NewExpression:

     

打开[[Construct]]方法   结果(2),提供无参数

     

新的MemberExpression参数

     

打开[[Construct]]方法   结果(2),提供清单   结果(3)为参数值

这只是构造函数是否接收到任何参数的问题。

答案 2 :(得分:-1)

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

function Foo() {}

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


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

这会警告'Some Val'。