function debounce(func, delay) {
let timer
//當前的this是指向window
return function (...args) {
//當前的this是指向dom元素
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
func.apply(this, args)
}, delay)
}
}
例:<div id="test">點擊</div>
實現(xiàn)隔3s執(zhí)行一次的操作:
document.getElementById('test').addEventListener('click', debounce(function() {
console.log('執(zhí)行完成之后的動作')
}, 3000))
記:事件回調(diào)函數(shù)里的this指向觸發(fā)當前事件的DOM元素