function bindEvent(elem, type, selector, fn) { if(fn == null) { fn = selector selector = null } elem.addEventListener(type, event => { const target = event.target if(selector) { // 代理绑定 if(target.matches(selector)) { fn.call(target. event) } } else { // 普通绑定 fn.call(target. event) } })}
// 普通代理const btn1 = document.getElementById('btn1')bindEvent(btn1, 'click', function(event) { event.preventDefault() // 阻止a标签跳转 const target = event.target alert(this.innerHTML)})
const div1 = document.getElementById('div1')bindEvent(div3, 'click','a',function(event) { event.preventDefault() // 阻止a标签跳转 const target = event.target if(target.nodeName === 'A') { alert(this.innerHTML) }})