鉤子函數和回調函數的區別
阿新 • • 發佈:2018-11-24
控制 spa 捕獲 指針 element 執行 子函數 window undefined
一般認為,鉤子函數就是回調函數的一種,其實還是有差異的,差異地方就是:觸發的時機不同。
先說鉤子函數:
鉤子(Hook)概念源於Windows的消息處理機制,通過設置鉤子,應用程序對所有消息事件進行攔截,然後執行鉤子函數。
let btn = document.getElementById("btn"); btn.onclick = () => { console.log("i‘m a hook"); }
上面的例子,在按鈕點擊時候立即執行鉤子函數。而看下面的例子:
btn.addEventListener("click",() =>{ console.log(this.onclick);//undefined });
給btn綁定了一個監聽器,只有消息捕獲完成之後才能觸發回調函數。
很明顯的差別就是:鉤子函數在捕獲消息的第一時間就執行,而回調函數是捕獲結束時,最後一個被執行的。
回調函數其實是調用者將回調函數的指針傳遞給了調用函數,當調用函數執行完畢後,通過函數指針來調用回調函數。而鉤子函數在消息剛發出,沒到達目的窗口前就先捕獲了該消息,先得到控制權執行鉤子函數,所以他可以加工改變該消息,當然也可以不作為,還可以強行結束該消息。
【完】
對於無知的人,你需要的不是說服他,而是要遠離他。
鉤子函數和回調函數的區別