【发布时间】:2011-03-08 00:38:23
【问题描述】:
我知道C++中两者的区别,但不知道JS是否也一样
【问题讨论】:
-
我问这个的原因是因为在我的代码中人们在很多地方都使用了 new Foo,当我通过 JSLint 运行它时,它抛出了一个错误,所以只是想知道这个语句是否有问题
标签: javascript
我知道C++中两者的区别,但不知道JS是否也一样
【问题讨论】:
标签: javascript
根据我的经验,除了 new Foo 你不能传递任何参数和 new Foo() 你可以传递任何参数之外没有什么区别。
【讨论】:
来自new 的 ECMAScript 语言规范:
新的新表达式:
调用 [[Construct]] 方法 结果(2),提供无参数
新的 MemberExpression 参数
调用 [[Construct]] 方法 结果(2),提供列表 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;之间的区别。我认为泰勒是对的。它们是一样的。