【问题标题】: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 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-24
      • 2020-01-05
      • 1970-01-01
      • 2018-02-23
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      相关资源
      最近更新 更多