function cat() {
this.Execute = new function() {
alert('meow');
}
}
var kitty = new cat();
http://jsfiddle.net/PaDxk/1/任何人都可以解释这个简单的Javascript行为?
为什么会这样?我没有告诉它运行该功能。
function cat() {
this.Execute = new function() {
alert('meow');
}
}
var kitty = new cat();
http://jsfiddle.net/PaDxk/1/任何人都可以解释这个简单的Javascript行为?
为什么会这样?我没有告诉它运行该功能。
当您编写new function() { ... }
时,您将创建一个匿名函数,然后立即在new
表达式中调用该函数。
该表达式的结果是由匿名函数创建的类的对象—和实例。
这相当于
var anonymous = function() { ... };
this.Execute = new anonymous;
+1你用10秒击败了我;) – weltraumpirat 2011-03-23 11:35:05
如果那是真的,你可以再次调用它 - 但是如果你尝试再次调用它,kitty.Execute不是一个函数。 – NibblyPig 2011-03-23 11:37:51
@SLC:编号'Execute'不是一个函数;这是“新”表达的对象。该功能是匿名的;再次调用它的唯一方法是编写'kitty.Execute.constructor()'。 – SLaks 2011-03-23 11:38:35
由于使用“新”。
,如果你只想要分配的功能,过一会儿给它,那么你需要使用它是这样的:
function cat() {
this.Execute = function() {
alert('meow');
}
}
var kitty = new cat();
kitty.Execute();
当你在这种情况下使用新
,你的函数的行为,就好像它是构造函数..
带有警报的匿名函数用作构造函数(因为new
)。 this.Execute
然后变成此功能对象的“实例”。
你的驼峰规则反转。类应该是UpperCamelCase;其他的一切应该是较低的摄像头。 – SLaks 2011-03-23 11:37:54