2011-03-24 41 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