2011-11-23 68 views
0

可能重複:
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的構造函數? ()在最後做了什麼?爲什麼功能()也在parentesis?之間有一些代碼,但爲了簡單起見,我將它們取出。以上內容與以下相同嗎?

dummy.foo = function(s){ 
    this.s = s; 

    return true; 
}; 

我想看看一些代碼別人寫不和我沒有在OO方面很多經驗,所以我感到很困惑,什麼是什麼。我甚至不能找出哪些是構造

+1

有趣的臉(); – Ben

+2

你從哪裏得到這些可怕的例子? – ChaosPandion

+0

@Ben哈哈,看起來像「大叫和眨眼」 – Phil

回答

0

末括號調用剛纔定義的功能。

這裏foo是一個函數:

var foo = function (x) { return 2*x; }; 

這裏bar是一個數字(4要準確):

var bar = function (x) { return 2*x; } (2); 
1
var dummy = (function (name) {return name;}(dummy || {})); 

此線通過可變dummy的功能,和完全返回它;否則,它會將一個空對象傳遞給該函數。 (該功能將在現場進行評估。)該值將存儲在變量dummy中。

dummy.foo = (function(s){ 
    this.s = s; 

    return true; 
})(); 

這定義到物體dummy屬性foo。目前,該函數接受一個參數,該參數存儲在對象dummy的屬性s中。目前,由於它不向函數傳遞任何東西,它將undefined存儲到屬性s