一尘不染

调用以变量命名的JavaScript函数

javascript

我有一个JavaScript变量,其中包含JavaScript函数的名称。通过使用$ .ajax等加载并放置在页面上,此功能存在于页面上。

谁能告诉我如何调用变量中命名的javascript函数?

该函数的名称位于变量中,因为用于加载页面片段(将其插入到当前页面中)的URL包含要调用的函数的名称。

我愿意就如何实施此解决方案提出其他建议。


阅读 328

收藏
2020-05-01

共1个答案

一尘不染

我会避免评估。

要解决此问题,您应该了解有关JavaScript的这些知识。

  1. 函数是一类对象,因此它们可以是对象的属性(在这种情况下,它们称为 方法 ),甚至可以是数组的元素。
  2. 如果您不选择函数所属的对象,则它属于全局范围。在浏览器中,这意味着您将其挂在名为“ window”的对象上,这是全局变量所在的位置。
  3. 数组和对象紧密相关。(有传言说,它们甚至可能是乱伦的结果!)您通常可以使用点 . 而不是方括号来代替 [] ,反之亦然。

您的问题是考虑点引用方式而不是方括号方式的结果。

所以,为什么不这样

window["functionName"]();

假设您的职能生活在全球空间中。如果已命名空间,则:

myNameSpace["functionName"]();

避免使用eval,并避免将字符串传入setTimeout和setInterval。我写了很多JS,而且我从不需要评估。“需要”评估源于对语言的了解不够深。您需要了解范围,上下文和语法。如果您曾经评估过,请问一下-
您将很快学习。

2020-05-01