()在下面的代码末尾做了什么?

时间:2011-11-23 01:21:38

标签: javascript

  

可能重复:
  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方面没有多少经验,所以我很困惑什么呢。我甚至无法弄清楚哪个是构造函数

3 个答案:

答案 0 :(得分:4)

答案 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);