如果我調用頁面加載以下功能:通過使用通配符JavaScript的通配符功能調用
addOnload(checkHeaders_m1)
addOnload(checkHeaders_m2)
addOnload(checkHeaders_m3)
addOnload(checkHeaders_m4)
addOnload(checkHeaders_m5)
我能拯救自己的一些代碼?像這樣:
addOnload(checkHeaders_m\*)
如果我調用頁面加載以下功能:通過使用通配符JavaScript的通配符功能調用
addOnload(checkHeaders_m1)
addOnload(checkHeaders_m2)
addOnload(checkHeaders_m3)
addOnload(checkHeaders_m4)
addOnload(checkHeaders_m5)
我能拯救自己的一些代碼?像這樣:
addOnload(checkHeaders_m\*)
如果全球然後他們會在window
對象上存在您的onload功能:
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]);
}
我在3分鐘內學習了Stack,而不是在其他地方的一個小時。非常感謝。 – kjarsenal 2012-07-24 19:02:46
那麼你可以隨時使用數組。但是你仍然需要進行多個函數調用 - 至少在數組中你可以編寫一個循環而不是手動輸入這些調用。
是什麼checkHeaders_m1...
? 這看起來像一個陣列的理想候選人。
for(var i=0; i<checkHeaders_m.length; i++)
{
addOnload(checkHeaders_m[i]);
}
如何使用Array.map
?
[1,2,3,4,5].map(function(a){addOnload(window['checkHeaders_m'+a]); return a;});
凡window
可能會有一些其他的命名空間ofcourse
或者
[checkHeaders_m1,checkHeaders_m2,checkHeaders_m3,checkHeaders_m4,checkHeaders_m5]
.map(function(ch){addOnload(ch);return ch;});
答案已被刪除,但值得注意的是,在結構上,這可能是一個糟糕的設置,可以簡化。 – Mathletics 2012-07-24 18:52:09