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

时间:2009-11-04 21:00:34

标签: 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

如何执行此功能?

谢谢! 安德烈

2 个答案:

答案 0 :(得分:5)

永远不要使用eval,这是邪恶的(只看一个字母差异) 你可以这样做:

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

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

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

答案 1 :(得分:4)

您应该能够从顶级window获取功能对象。 E.g。

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