按名称执行函数,将对象作为参数传递

And*_*rey 1 javascript method-call

这是问题 - 我知道函数的名称(并且该函数已经从外部脚本加载),但我没有实际的函数对象可供我调用.通常我会调用eval(function_name +"(arg1,arg2)"),但在我的情况下,我需要传递一个对象,而不是字符串.简单的例子:

var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
Run Code Online (Sandbox Code Playgroud)

我该如何执行这个功能?

谢谢!安德烈

Pim*_*ger 5

永远不要使用eval,它是邪恶的(只看到一个字母差异)你可以简单地做:

var div = document.getElementById('myDiv');
var result = window[function_name](div);
Run Code Online (Sandbox Code Playgroud)

这是可能的,因为函数是javascript中的第一类对象,因此您可以使用任何其他变量来访问它们.请注意,这也适用于需要字符串或任何参数的函数:

var result = window[another_function_name]("string1", [1, "an array"]);
Run Code Online (Sandbox Code Playgroud)