gpt4 book ai didi

JavaScript - 包含函数名称的字符串

转载 作者:行者123 更新时间:2023-11-30 10:33:07 25 4
gpt4 key购买 nike

通常,如果我有一个包含函数名称的字符串,我可以做类似...

window[functionName](arguments);

但是,这在使用“jQuery 对象”风格的编程(或任何正确的术语)时不起作用。例如;

(function ($) {
"use strict";
$.test = (function () {
var func1 = function () {
alert("func1");
};

var func2 = function () {
alert("func2");
};

return {
Test: function (functionName) {
var fn = window[functionName]; // Need to specify scope here, somehow
if (typeof fn === 'function') {
fn();
} else {
alert("fn() = " + fn);
}
}
}

} ());
} (jQuery));

$.test.Test("func1");
$.test.Test("func2");

理想情况下,这将显示 func1 后跟 func2 - 但显然范围是错误的,我不确定在这种情况下如何指示它。

在这种情况下,如何指定我尝试调用的函数的范围?我当然可以使用 eval(),但我正在努力避免这种情况......

谢谢。

最佳答案

改为使用对象映射来容纳函数:

    var funcs = {
func1: function () {
alert("func1");
},
func2: function () {
alert("func2");
}
};

return {
Test: function (functionName) {
var fn = funcs[functionName];
if (typeof fn === 'function') {
fn();
} else {
alert("fn() = " + fn);
}
}
};

关于JavaScript - 包含函数名称的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680107/

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