Vue源碼閱讀之4事件初始化

之前講到了創建Vue對象到BeforeCreated之後就會進行生命週期的初始化,這裏我們將生命週期初始化之後的事件初始化initEvents。

export function initEvents (vm: Component) {
  vm._events = Object.create(null)
  vm._hasHookEvent = false
  const listeners = vm.$options._parentListeners
  if (listeners) {
    updateComponentListeners(vm, listeners)
  }
}

事件初始化的過程看起來很少,但是內容其實一點也不少。

vm爲Vue對象。

首先設置Vue對象的監聽事件的事件對象爲空的對象,需要注意的是這個對象沒有原型鏈。

然後初始化Vue對象的_hasHookEvent屬性(是否有監聽Hook事件)值爲false。

使用變量listeners 獲取此Vue對象上的$options._parentListeners屬性,這個屬性是獲取在此組件上父組件上定義的監聽的函數

如果$options._parentListeners的值不爲undefined更新此組件上的監聽器。

更新組件的監聽器我們將在後面的章節進行講解。

整個事件監聽初始化函數主要是初始化本組件的監聽事件對象和Hook事件監聽,以及更新父組件的監聽器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章