[JS的事件代理和宏任務微任務|青训营笔记]

58 阅读2分钟

什麼是宏任務和微任務?宏任務包括:setTimeout、setInterval,AJAX,DOM事件

微任務有Primise async/await,微任務比宏任務的執行時間要早。

    同步任務:在主線程上排隊執行的任務只有前一個任務執行完畢,才能執行後一個任務,形成一個執行棧。

    異步任務:不進入主線程,而是進入任務隊列,當主線程中的任務執行完畢,就從任務隊列中取出任務放進主線程來進行執行。由於主線程不斷重複的獲得任務、執行任務、在獲取在執行,所有這種機制被叫做事件循環Event Loop;

    JS有兩種任務的執行模式:同步模式和異步模式。

       在異步模式下,創建異步任務主要分為宏任務與微任務。

       宏任務是由宿主(瀏覽器或者node)發起的,而微任務是由JS發起的

       宏任務為:setTimeout、setInterval、script

       微任務:promise.[then/catch/finally]。

       執行順序:主線程>>主線程上創建的微任務>>主線程上創建的宏任務。

       事件代理,就是把一個元素的響應事件(click、keydown)的函數委託到另一個元素。

       事件流的都會經過三個階段:捕獲階段,目標階段,冒泡階段。

       事件委託會把一個或者一組元素的事件委託到他的父層或者更外層元素的綁定時間上,然後在外層元素上去執行函數。

       new操作符用於創建一個給定構造函數的實例對象,new通過構造函數創建出來的實例可以訪問構造函數裡的屬性,也可以訪問到構造函數中原型鏈中的屬性,就是實例與構造函數通過原型鏈連接了起來。