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


一般認為,鈎子函數就是回調函數的一種,其實還是有差異的,差異地方就是:觸發的時機不同

先說鈎子函數:

鈎子(Hook)概念源於Windows的消息處理機制,通過設置鈎子,應用程序對所有消息事件進行攔截,然后執行鈎子函數。 

let btn = document.getElementById("btn");
btn.onclick = () => {
    console.log("i'm a hook");
}

 上面的例子,在按鈕點擊時候立即執行鈎子函數。而看下面的例子:

btn.addEventListener("click",() =>{
    console.log(this.onclick);//undefined
});

給btn綁定了一個監聽器,只有消息捕獲完成之后才能觸發回調函數。

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

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

 

【完】

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM