函数调用中的javascript通配符

时间:2012-07-24 18:46:11

标签: javascript

如果我在页面加载时调用以下函数:

addOnload(checkHeaders_m1)
addOnload(checkHeaders_m2)
addOnload(checkHeaders_m3)
addOnload(checkHeaders_m4)
addOnload(checkHeaders_m5)

我可以使用通配符保存自己的一些代码吗?类似的东西:

addOnload(checkHeaders_m\*)

4 个答案:

答案 0 :(得分:2)

如果您的onload函数是全局的,那么它们将存在于window对象上:

for (var i = 1; i < 6; i++) {
    addOnload(window['checkHeaders_m' + i]);
}

或者,创建其他对象的函数属性,以便don't pollute the global namespace

var myObj = {
    checkHeaders_m1: function () { ... },
    checkHeaders_m2: function () { ... },
    checkHeaders_m3: function () { ... },
    checkHeaders_m4: function () { ... },
    checkHeaders_m5: function () { ... }
};

for (var i = 1; i < 6; i++) {
    addOnload(myObj['checkHeaders_m' + i]);
}

答案 1 :(得分:1)

嗯,你总是可以使用数组。但你仍然需要进行多个函数调用 - 至少对于一个数组你可以写一个循环而不是手动输入这些调用。

答案 2 :(得分:0)

什么是checkHeaders_m1...? 这看起来像是阵列的理想候选者。

for(var i=0; i<checkHeaders_m.length; i++)
{
addOnload(checkHeaders_m[i]); 
}

答案 3 :(得分:0)

如何使用Array.map

[1,2,3,4,5].map(function(a){addOnload(window['checkHeaders_m'+a]); return a;});

window可能是某些其他名称空间

或者

[checkHeaders_m1,checkHeaders_m2,checkHeaders_m3,checkHeaders_m4,checkHeaders_m5]
 .map(function(ch){addOnload(ch);return ch;});