javascript - 动态构造js函数名

标签 javascript jquery

我想这样调用一个函数

redBall(this);

但我想从一个字符串动态构造。我试过类似的方法,但没有用。

var color = 'red';
color+'Ball'(this);

最佳答案

你可以这样做:

var ballFunctions = {
    redBall: function(obj) {
        alert("Hi, I'm a red ball");
    },
    blueBall: function(obj) {
        alert("Hi, I'm a blue ball");
    }
};

color = "red";
ballFunctions[color + "Ball"](this);
color = "blue";
ballFunctions[color + "Ball"](this);


您还可以将其与 Jimmy 的回答结合起来并执行以下操作:

function ball(color, obj) {
    ballFunctions[color + "Ball"](obj);

    // Or use the window object if your funcs are in the global namespace like Cameron said
    // window[color + "Ball"](obj);
}

color = "red";
ball(color, this);

关于javascript - 动态构造js函数名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602253/

相关文章:

javascript - 同一 link_to 助手的不同行为 - 模板丢失

JavaScript 访问函数中的变量

javascript - 如何在父 div 的中间重叠两个位置相对的 flexbox 子项?

javascript - 单击鼠标左键的上下文菜单?

javascript - 发现了意外的 token ,但没有看到它

javascript - 将另一张图像绘制到 Canvas 上

javascript - 根据 Jquery 框中提到的文本更改类名称

javascript - 根据行数而不是文本长度显示更多/更少

javascript - 月份范围只能是所选月份之前的 9 个月内

javascript - 让 jquery 插件 (sidr) 与 Rails 一起使用