updateListeners(listeners, oldListeners || {}, add, remove, createOnceHandler, vm)
updateListeners (<br> on: Object,<br> oldOn: Object,<br> add: Function,<br> remove: Function,<br> createOnceHandler: Function,<br> vm: Component<br>)
for in 遍历父组件事件组
normalizeEvent标准化事件,根据我们的的事件名的一些特殊标识(之前在 addHandler 的时候添加上的)区分出这个事件是否有 once、capture、passive 等修饰符。
如果当前事件有回调函数fns,则createFnInvoker分别对单个函数或者函数数组做处理
如果是一次性事件,则返回createOnceHandler,在其中闭包中,res = fn.apply(null, arguments)记录函数执行结果,如果不为空,则说明函数已执行,然后取消_target.$off(event, onceHandler)
挂载事件 add(event.name, cur, event.capture, event.passive, event.params)
当我们第二次执行该函数的时候, 把之前绑定的 involer.fns 赋值为新的回调函数即可,这样就保证了事件回调只添加一次,之后仅仅去修改它的回调函数的引用。