場景:需要綁定 keydown 事件,根據(jù) event.keyCode 來判斷是哪個(gè)鍵被按下,做出相應(yīng)處理;但是不希望用戶過于頻繁的按鍵操作,所以用到函數(shù)節(jié)流,但是 event 對象傳遞過程中出現(xiàn)一些奇怪的現(xiàn)象,求大佬們解答以下是部分代碼:// 事件綁定window.addEventListener('keydown', throttle(keydownHandler, 50, 100, event));// 函數(shù)節(jié)流function throttle(fn, delay, atLeast) { var timeout = null, startTime = Date.now(), args = Array.prototype.slice.call(arguments, 3); return function () { var endTime = Date.now(); clearTimeout(timeout); if(endTime - startTime >= atLeast) { fn.apply(null, args); startTime = endTime; } else { timeout = setTimeout(function() { fn.apply(null, args); }, delay); } };}// keydown 事件處理程序function keydownHandler(event) { var e = event || window.event; var keyCode = e.keyCode || e.which; switch (keyCode) { /*...*/ }}然而我在 keydownHandler 中打印 event 得到的結(jié)果卻是這樣的:事件類型卻變成了 load ,求大佬們指點(diǎn),為什么 event 對象會改變?這里的 event 對象該如何傳遞呢?
js 函數(shù)節(jié)流 event 對象傳遞問題
12345678_0001
2018-12-19 18:15:34