2011-03-24 92 views
3

我需要存儲一個匿名函數作爲我的「named」函數的參數傳遞給Javascript,然後再調用它。如何處理javascript函數中的匿名函數?

我該怎麼做?我已經知道如何傳遞一個匿名函數作爲參數,但是當我處於代碼的另一端時,我不知道如何處理它。

謝謝

+0

只是將它存儲在與功能/上下文相關的任何地方。像'function xxx(f){this.handler = f; }'//將其改爲其他對象,自己,不管。以後你可以直接調用它''this.handler()' – bestsss 2011-03-24 11:51:49

回答

5

Functions in JavaScriptfirst-class members這意味着你可以和他們一起工作,就像你在語言的任何其他數據類型 - 你可以把它們作爲參數傳遞,讓他們作爲成員變量的其他函數中,從功能等

在這種情況下你問回報他們,它的工作原理就像用整齊的增加,你可以調用下面的功能,因爲它功能的任何其他命名變量:

function myFunc(anonymous){ 
    var arg1; 
    anonymous(arg1); 
} 

myFunc(function(arg1){console.log(arg1)}); 
0

你能分配你的匿名函數作爲一個參數傳遞給一個命名函數嗎?這個命名函數中的全局變量,然後可以使用全局變量作爲匿名函數的引用。

+0

因此,你不*在談論**全局**變量,因爲它是一個變量*裏面的函數。這應該可以編輯,所以不會讓人困惑。 – 2011-03-24 12:04:47

1

只需使用參數的名稱調用它。

function callThisLater(laterFunction) { 
    // ... 
    laterFunction(args); 
} 

callThisLater(function (arg1) { 
    alert("We've been called!"); 
}); 
1

下面是簡單的例子:

function Foo(func) { 
    this.Func = func; 
    this.Activate = function() { 
     this.Func(); 
    }; 
} 

var foo = new Foo(function() { alert("activated"); }); 
foo.Activate(); 

我相信你錯過使用()「激活」的功能是什麼 - 因爲據我所知,你達到「存儲」的點函數變量。

+0

有趣的現場測試案例:http://jsfiddle.net/yahavbr/sHDgk/ – 2011-03-24 11:53:53