【问题标题】:Executing a function by name, passing an object as a parameter按名称执行函数,将对象作为参数传递
【发布时间】:2009-11-05 05:08:53
【问题描述】:
这就是问题所在 - 我知道函数的名称(并且该函数已经从外部脚本加载),但我没有实际的函数对象可供我调用。通常我会调用 eval(function_name + "(arg1, arg2)"),但在我的情况下,我需要将一个对象传递给它,而不是一个字符串。
简单示例:
var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id
如何执行这个功能?
谢谢!
安德烈
【问题讨论】:
标签:
javascript
method-call
【解决方案1】:
永远不要使用 eval,它是邪恶的(只看一个字母的区别)
你可以这样做:
var div = document.getElementById('myDiv');
var result = window[function_name](div);
这是可能的,因为函数是 javascript 中的第一类对象,因此您可以像使用任何其他变量一样访问它们。请注意,这也适用于需要字符串或任何内容作为参数的函数:
var result = window[another_function_name]("string1", [1, "an array"]);
【解决方案2】:
您应该能够从顶级window 获取函数对象。例如
var name = "function_name";
var func = window[name];
func( blah );