代码语言:javascript复制
// 闭包的使用场景:一个方法要被多次调用,并且共享一个数据
// 防抖和节流
// 自执行函数省去单独调用一次
let addEvent = (function() {
let obj = {};
return function(eventName,fns){
if(obj[eventName] && obj[eventName].length>0){
obj[eventName].push(fns);
}else {
obj[eventName] = [];
obj[eventName].push(fns);
// 相当于每次添加一个新事件,则给这个事件绑定对应的事件,因为引用的obj是引用类型,之后每次obj修改,则会同步更新进来
document.addEventListener(eventName,function () {
for(let fn of obj[eventName]){
fn();
}
})
}
}
})()
addEvent('mouseover',function () {
console.log("鼠标进入")
})
addEvent('click',function () {
console.log("click1")
})
addEvent('click',function () {
console.log("click2")
})
addEvent('click',function () {
console.log("click3")
})
addEvent('click',function () {
console.log("click4")
})