关于javascript:按名称执行函数,传递对象作为参数

Executing a function by name, passing an object as a parameter

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

1
2
var div = document.getElementById('myDiv')
var func ="function_name" -- this function expects a DOM element passed, not id

如何执行这个功能?

谢谢!
安德烈


永远不要使用 eval,it?'s evil(只看一个字母的区别)
你可以简单地做:

1
2
var div = document.getElementById('myDiv');
var result = window[function_name](div);

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

1
var result = window[another_function_name]("string1", [1,"an array"]);

你应该可以从顶层window获取函数对象。例如

1
2
3
var name ="function_name";
var func = window[name];
func( blah );