咱们都知道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