// 閉包的使用場景:一個方法要被多次調用,並且共用一個數據 // 防抖和節流 // 自執行函數省去單獨調用一次 let addEvent = (function() { let obj = {}; return function(eventName,fns){ if(obj[eventName] ...
// 閉包的使用場景:一個方法要被多次調用,並且共用一個數據 // 防抖和節流 // 自執行函數省去單獨調用一次 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") })