js中的连接函数名称

时间:2014-04-24 08:23:25

标签: javascript string-concatenation

有没有办法连接js函数名?现在我有这个:

switch (playId) {
        case "11":
            play11();
            break;
        case "22":
            play22();
            break;
        case "33":
            play33();
            break;
        case "44":
            play44();
            break;
        default:
            break;
    }

我想做这样的事情:

var function = "play" + playId + "()";

并称之为..如果可能,最好的方法是什么?


解决方案:

我在thefourtheyexdazz的帮助下所做的非常简单:

var playFunction = window["play" + playId];
    playFunction();

3 个答案:

答案 0 :(得分:6)

最好的方法是将它们放在像这样的对象中

var functions = {
    11: play11,
    22: play22,
    33: play33,
    44: play44
};

然后像这样调用它

functions[taksId]();

由于如果找不到taskId您不想失败,您可以

if (functions.hasOwnProperty(taskId)) {
    functions[taksId]();
}

答案 1 :(得分:6)

如果这些函数是在全局范围内定义的,那么您可以从全局对象中获取它们:

var foo = window["play" + taskId];

否则你可以将它们放在一个对象中,就像建议的另一个答案一样。

答案 2 :(得分:1)

如果将函数放在数组中:

var functions = {
    'play1':function(){},
    'play2':function(){}
}

这样称呼:

functions['play'+number]();