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

通常認爲,鉤子函數就是回調函數的一種,其實仍是有差別的,差別地方就是:觸發的時機不一樣函數

先說鉤子函數:this

鉤子(Hook)概念源於Windows的消息處理機制,經過設置鉤子,應用程序對全部消息事件進行攔截,而後執行鉤子函數。 spa

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

 上面的例子,在按鈕點擊時候當即執行鉤子函數。而看下面的例子:指針

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

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

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

回調函數實際上是調用者將回調函數的指針傳遞給了調用函數,當調用函數執行完畢後,經過函數指針來調用回調函數。而鉤子函數在消息剛發出,沒到達目的窗口前就先捕獲了該消息,先獲得控制權執行鉤子函數,因此他能夠加工改變該消息,固然也能夠不做爲,還能夠強行結束該消息。事件

 

【完】get

對於無知的人,你須要的不是說服他,而是要遠離他。回調函數

相關文章
相關標籤/搜索