动态构造js函数名

jar*_*arn 1 javascript jquery

我想以这种方式调用函数

redBall(this);
Run Code Online (Sandbox Code Playgroud)

但我想从一个字符串动态构造.我尝试过类似的东西,但它不起作用.

var color = 'red';
color+'Ball'(this);
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 5

你可以这样做:

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);
Run Code Online (Sandbox Code Playgroud)


您也可以将此与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);
Run Code Online (Sandbox Code Playgroud)


Cam*_*ron 5

下标隐式window对象:

window[color + 'Ball'](this)
Run Code Online (Sandbox Code Playgroud)

你的例子试图调用字符串'Ball'(因为字符串不可调用,这没有意义),然后将结果连接起来color- 不完全是你想要的.