这是问题 - 我知道函数的名称(并且该函数已经从外部脚本加载),但我没有实际的函数对象可供我调用。通常我会调用eval(function_name +“(arg1,arg2)”),但在我的情况下,我需要传递一个对象,而不是字符串。 简单的例子:
var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
如何执行此功能?
谢谢! 安德烈
答案 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 );