可能重复:
What's the role of the parentheses in the following piece of code?
var dummy = (function (name) {return name;}(dummy || {}));
dummy.foo = ( function(s){
this.s = s;
return true;
}) ();
好吧所以我不熟悉OO javascript,但我知道一点点。我是否正确地说这是foo的构造函数? ()在最后做了什么?也为什么功能(p){}在胃肠道检查中也是如此?中间有一些代码,但为了简单起见,我把它们拿出来了。以上是否与下面相同?
dummy.foo = function(s){
this.s = s;
return true;
};
我试图看看别人写的代码做了什么,我在OO方面没有多少经验,所以我很困惑什么呢。我甚至无法弄清楚哪个是构造函数
答案 0 :(得分:4)
这是一个自动执行的JavaScript函数:
http://briancrescimanno.com/2009/09/24/how-self-executing-anonymous-functions-work/
答案 1 :(得分:1)
var dummy = (function (name) {return name;}(dummy || {}));
此行将变量dummy
传递给函数,并将其准确返回;否则,它将一个空对象传递给该函数。 (该功能在现场进行评估。)然后将该值存储在变量dummy
中。
dummy.foo = ( function(s){
this.s = s;
return true;
}) ();
这会将属性foo
定义为对象dummy
。目前,该函数接受一个参数,该参数存储在对象s
的属性dummy
中。目前,因为它没有向函数传递任何内容,所以它将undefined
存储到属性s
。
答案 2 :(得分:0)
最后的括号调用刚刚定义的函数。
此处foo
是一个函数:
var foo = function (x) { return 2*x; };
这里bar
是一个数字(准确地说是4):
var bar = function (x) { return 2*x; } (2);