我们都知道dom操作会触发时间,vue组件自己也有一套事件
在initMixin中,在合并options时可以看到
opts._parentListeners = vnodeComponentOptions.listeners
这个代码,我们可以知道options的listeners会含有继承组件的监听器,
我们initEvents(vm)
会初始化事件和监听器
摘录一些代码
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属性里边添加事件名称的数组,数组里边包含监听事件列表