Ale*_*lex 5 javascript php jquery function
有谁知道是否有一个?
我想使用变量名称调用函数.
我在这里发布了一个小提琴我想要做的事:
<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']()
.