javascript相当于PHP的call_user_func()

Ale*_*lex 5 javascript php jquery function

有谁知道是否有一个?

我想使用变量名称调用函数.


编辑:

我在这里发布了一个小提琴我想要做的事:

http://jsfiddle.net/sAzPA/

<div id="some">
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

JS:

(function($){
  $.fn.MyPlugin = function(){

    return this.each(function(){
       var somefunction = function(arg1, arg2){ alert(arg1); },
           someotherfunction = function(arg1, arg2){ alert(arg2); },
           reallyimportantfunction = function(arg1, arg2){
            var foo = $(this).attr('id') + 'function';

            // here I want to call the function with the foo value as name, and pass it arg1 and arg2

            $()[foo](arg1, arg2); // <- doesn't work

           };

       reallyimportantfunction();
    });
  };  
})(jQuery);


jQuery(function($){
  $('#some').MyPlugin ();

});
Run Code Online (Sandbox Code Playgroud)

Spu*_*ley 18

如果在全局级别定义函数,则它将自动成为该window对象的子级.

因此,您可以随时拨打window.functionName();您通常会拨打的任何地方functionName();.

此外,由于Javascript对象的工作方式与关联数组类似,因此可以使用如下所示的数组语法调用任何对象的任何子对象:object['childName'].这包括函数,因此您可以object['functionName']();对作为对象成员的任何函数执行此操作.

将这两点组合在一起,您可以调用任何全局定义的函数,如下所示:

window['functionName']();
Run Code Online (Sandbox Code Playgroud)

因为functionName在上面的示例中是一个字符串,您可以在这些括号中使用变量,这意味着您具有与PHP相同的功能call_user_func().

[编辑]

正如我所说,这适用于任何对象.OP的评论声明他想要以这种方式使用的函数是在JQuery插件中.因此它们可能是JQuery对象的一部分,通常会被调用:( JQuery().functionName();$代替JQuery).

Javascript语法允许我们['functionName']()在我们可以使用的任何地方使用.functionName(),因此,采用上面的JQuery示例,我们可以将其更改为如下所示:

JQuery()['functionName']();`
Run Code Online (Sandbox Code Playgroud)

但是这种技术可以适用于任何Javascript对象.您使用的任何地方.functionName(),都可以替换['functionName']().