我知道C ++中两者之间的区别,但不知道JS是否也是一样
答案 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'。