您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

名称作为字符串时如何执行JavaScript函数

名称作为字符串时如何执行JavaScript函数

eval除非您 绝对 没有其他选择 否则不要使用。

如前所述,使用这种方法将是最好的方法

window["functionName"](arguments);

但是,这将不适用于名称间的功能

window["My.Namespace.functionName"](arguments); // fail

您将按照以下方式进行操作:

window["My"]["Namespace"]["functionName"](arguments); // succeeds

为了使操作更简单并提供一些灵活性,这里提供了一个便捷功能

function executeFunctionByName(functionName, context /*, args */) {
  var args = Array.prototype.slice.call(arguments, 2);
  var namespaces = functionName.split(".");
  var func = namespaces.pop();
  for(var i = 0; i < namespaces.length; i++) {
    context = context[namespaces[i]];
  }
  return context[func].apply(context, args);
}

您可以这样称呼它:

executeFunctionByName("My.Namespace.functionName", window, arguments);

请注意,您可以根据需要传递任何上下文,因此与上述操作相同:

executeFunctionByName("Namespace.functionName", My, arguments);
javascript 2022/1/1 18:16:12 有416人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶