钩子机制是这样的,大家按照某一规则写一个方法(这个规则在方法名称上),然后页面加载完之前,统一执行所有的钩子函数。

注意callHooks方法,里面的局部变量s就是钩子函数名称中一定要有的内容。——这是使用钩子的方法!

// 处理钩子的对象  
var hook = (function(){  
    return {  
        timer:null,  
        init:function(){  
            this.callHooks('init');  
        },    
        callHooks:function(init){  
            var s = "hook_" + init + '_event',  
            f = [];   
            for(var h in window){  
                if(h.indexOf(s) != 0) continue;  
                f.push(h);  
            }     
            this.hooksTimeout(f);  
        },    
        hooksTimeout:function(hooks){  
            if(0 === hooks.length){  
                if(this.timer) clearTimeout(this.timer);  
                return;  
            }     
 
            var h = hooks.shift();  
            window[h].apply();  
            window[h] = undefined;  
 
            window.setTimeout(this.hooksTimeout(hooks), 200);  
        }     
    }     
}());  
 
// 钩子1  
var hook_init_event_tpl_html = function(){  
    document.getElementById('test').innerHTML = 'This is HTML!';  
}  
 
// 钩子2  
var hook_init_event_tpl_console = function(){  
    console.log('This is console!');  
}  
 
// 最好在页面加载完之前调用,也就是在window.onload()之前  
hook.init(); 

  

总结

很多问题,如果大家一起讨论是很有帮助的,在这过程中我们能学到很多东西,我们也可以在这过程中从牛人身上学到很多方法和思维过程,几乎每次的技术讨论会我都有不菲的收获——我不知道这是不是传说中的“头脑风暴”。