1

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

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

如何执行此功能?

谢谢!安德烈

4

2 回答 2

5

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

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

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

var result = window[another_function_name]("string1", [1, "an array"]);
于 2009-11-04T21:03:51.410 回答
4

您应该能够从顶层获取函数对象window。例如

var name = "function_name";
var func = window[name];
func( blah );
于 2009-11-04T21:02:20.203 回答