我知道在C++中两者的区别,但不知道在JS中是否也相同。
我知道在C++中两者的区别,但不知道在JS中是否也相同。
根据我的经验,除了使用 new Foo()
可以传递参数外,与使用 new Foo
没有区别。
以下是关于new
的ECMAScript语言规范:
new NewExpression:
在Result(2)上调用[[Construct]]方法,不提供任何参数
new MemberExpression Arguments
在Result(2)上调用[[Construct]]方法,将Result(3)作为参数值列表提供。
问题在于构造函数是否接收任何参数。
Foo() 调用一个函数,new Foo() 实例化一个类型为 foo 的对象。如果你已经定义了一个原型,那么在其中定义的所有方法和实例变量也会被实例化。
function Foo() {}
Foo.prototype = {
myVar: 'Some val',
sayFoo: function () {alert(this.myVar);}
}
var foo = new Foo();
foo.sayFoo();
这将会触发警报 'Some Val'。
var foo = new Foo();
和var foo = new Foo;
之间的区别。我认为Tyler是正确的,它们是相同的。 - Mike M. Lin