js 函数节流 event 对象传递问题

场景:需要绑定 keydown 事件,根据 event.keyCode 来判断是哪个键被按下,做出相应处理;但是不希望用户过于频繁的按键操作,所以用到函数节流,但是 event 对象传递过程中出现一些奇怪的现象,求大佬们解答

以下是部分代码:

// 事件绑定

window.addEventListener('keydown', throttle(keydownHandler, 50, 100, event));


// 函数节流

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 得到的结果却是这样的:

https://img.mukewang.com/5c46db420001722b05080302.jpg

事件类型却变成了 load ,求大佬们指点,为什么 event 对象会改变?这里的 event 对象该如何传递呢?

12345678_0001
浏览 774回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript