//代理的好处,1代码简洁,2减少浏览器内存的占用
function bindEvent(elem,type,selector,fn){
if(fn == null){
fn = selector
selector = null
}
elem.addEventListener(type,function(e){
var target
if (selector) {
target = e.target
if(target.matches(selector)){//target是否是符合目标的元素,dom节点是否和选择器匹配
fn.call(target,e)//通过this指向target获取的事件触发的目标
}
}else{
fn(e)
}
})
}
var div1 = document.getElementById('div1')
bindEvent(div1,'click','a',function(e){
preventDefault();
console.log(this.innerHTML)//this是因为获取的是div1做事件绑定,但是代理的a标签,this指向真正触发标签的a对象
this.className="active"
})