咱們都知道dom操做會觸發時間,vue組件本身也有一套事件vue
在initMixin中,在合併options時能夠看到node
opts._parentListeners = vnodeComponentOptions.listeners
這個代碼,咱們能夠知道options的listeners會含有繼承組件的監聽器,
咱們initEvents(vm)
會初始化事件和監聽器數組
摘錄一些代碼dom
if (listeners) { updateComponentListeners(vm, listeners) } target = vm updateListeners(listeners, oldListeners || {}, add, remove, createOnceHandler, vm) target = undefined // updateListeners裏邊是這樣的 add(event.name, cur, event.capture, event.passive, event.params) function add (event, fn) { target.$on(event, fn) } // $on裏邊是這樣的 (vm._events[event] || (vm._events[event] = [])).push(fn)
最後就是往vm的_events屬性裏邊添加事件名稱的數組,數組裏邊包含監聽事件列表code