性能方面,使用函數數組註冊一個單一事件來爲每個需要調用的函數調用或只註冊一個不同的事件會更好嗎?我似乎無法對谷歌註冊1個有很多通話或註冊多個事件的事件?
找到答案一個例子:
給了這些功能
function doA(){ /* do A */};
function doB(){ /* do B */};
function doC(){ /* do C */};
是它更好地做到這一點
var funcs=[];
funcs.push(doA);
funcs.push(doB);
funcs.push(doC);
$(window).on("resize", function(){
for(var i=0; i<funcs.length; i++){
funcs[i]();
}
});
或本
$(window).on("resize", doA);
$(window).on("resize", doB);
$(window).on("resize", doC);
我在這個例子中使用jQuery,但同樣的事情可能是要求純Javascript。
請注意,這只是一個例子,在我的真實應用程序中,函數/事件在執行過程中被動態添加/刪除。
編輯:雖然我同意最好的方法是有一個函數調用其他的,這只是其他兩種方法的例子,在其他情況下,也就是說當你不知道提前有多少功能可以用來監聽一個事件。在這種情況下,最好是爲每個函數設置一個監聽器,或者創建一個可以完成調用的全局監聽器?
如果沒有異步函數,這些函數中獲取調用那麼你爲什麼不只需撥打B A內部並調用C B裏面,那麼你可以有$(窗口).on(「resize」,doA); – mukund
這只是一個例子,在我的真實應用程序中,函數/事件在執行期間被動態添加/刪除。 – valepu