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"]); |
你应该可以从顶层
1 2 3 | var name ="function_name"; var func = window[name]; func( blah ); |