gpt4 book ai didi

javascript - 当我的名称为字符串时如何执行 JavaScript 函数

转载 作者:行者123 更新时间:2023-12-01 05:45:00 24 4
gpt4 key购买 nike

我有 JavaScript 中函数的名称作为字符串。如何将其转换为函数指针以便稍后调用?

根据具体情况,我可能还需要将各种参数传递到方法中。

某些函数可能采用namespace.namespace.function(args[...])的形式。

最佳答案

不要使用eval,除非您绝对、肯定别无选择。

正如已经提到的,使用这样的东西将是最好的方法:

window["functionName"](arguments);

但是,这不适用于命名空间函数:

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

您将这样做:

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

为了使这更容易并提供一些灵 active ,这里有一个方便的函数:

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 - 当我的名称为字符串时如何执行 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27635784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com