调用变量中命名的 JavaScript 函数

2022-08-30 01:52:44

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

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

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

我对有关如何实施此解决方案的其他建议持开放态度。


答案 1

我会避免评估。

要解决这个问题,你应该了解这些关于JavaScript的事情。

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

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

那么,为什么不是这样的东西,

window["functionName"]();

这是假设你的函数存在于全球空间中。如果已使用命名空间,则:

myNameSpace["functionName"]();

避免 eval,并避免将字符串传入 setTimeout 和 setInterval。我写了很多JS,我从来不需要eval。“需要”的评估来自对语言不够深入的了解。您需要了解范围、上下文和语法。如果你曾经被评估所困,只要问问 - 你会很快学会的。


答案 2

如果它在全局范围内,最好使用:

function foo()
{
    alert('foo');
}

var a = 'foo';
window[a]();

比。因为是evaaaaaaleval()eval()

就像诺斯雷德娜在我面前40秒说的那样,>.<