patchProp函数为元素添加监听函数时是不是要先用createInvoker函数包装监听函数?

Author: nongsiaCreated Dec 11, 2022Updated Dec 11, 2022

function patchProp(el, key, preValue, nextValue) { if (isOn(key)) { const invokers = el._vei || (el._vei = {}); const existingInvoker = invokers[key]; if (nextValue && existingInvoker) { existingInvoker.value = nextValue; //这个invoker是一个函数,直接修改function.value是不是有点问题?我没有找到类似写法 } else { const eventName = (key).slice(2).toLowerCase(); if (nextValue) { const invoker = (invokers[key] = nextValue); //没用createInvoker包装函数去包装,所以invoker是一个函数 el .addEventListener(eventName, invoker); } else { el.removeEventListener(eventName, existingInvoker); invokers[key] = undefined; } } } else { if (nextValue === null || nextValue === "") { el.removeAttribute(key); } else { el.setAttribute(key, nextValue); } } }