之前講到了創建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事件監聽,以及更新父組件的監聽器。