1. 程式人生 > >鉤子函數和回調函數的區別

鉤子函數和回調函數的區別

控制 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綁定了一個監聽器,只有消息捕獲完成之後才能觸發回調函數。

很明顯的差別就是:鉤子函數在捕獲消息的第一時間就執行,而回調函數是捕獲結束時,最後一個被執行的。

回調函數其實是調用者將回調函數的指針傳遞給了調用函數,當調用函數執行完畢後,通過函數指針來調用回調函數。而鉤子函數在消息剛發出,沒到達目的窗口前就先捕獲了該消息,先得到控制權執行鉤子函數,所以他可以加工改變該消息,當然也可以不作為,還可以強行結束該消息。

【完】

對於無知的人,你需要的不是說服他,而是要遠離他。

鉤子函數和回調函數的區別