求解防抖节流中绑定this指向的问题

问题遇到的现象和发生背景
        为什么要在里面重新绑定this指向,不绑定直接调用有什么危害/缺陷吗?
问题相关代码,请勿粘贴截图
function throttle(fn, delay) {
            var lastTime = 0;
            return function () {
                var nowTime = Date.now();
                if (nowTime - lastTime > delay) {                            
                    fn.call(this);//此处有疑问
                    lastTime = nowTime;
                }
            }
        }
function debounce(fn, delay) {//防抖
            var timer = null;
            return function () {
                clearTimeout(timer);
                timer = setTimeout(function () {
                    fn.apply(this);//此处有疑问
                }, delay);
            }
        }
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

我认为因为你这个防抖节流函数是模块化的东西,它没有全局的上下文,在用这个函数调用fn时,如果不重新绑定fn函数内部的this指向,fn内就不能用this了

如有帮助,望采纳

主要看你fn怎么写的,有疑问处的语句真正做了什么事,里面this绑定了fn,却并没有做什么,是绑定时就触发了fn的什么内容吗,如果注释掉还能运行吗,多思考。这里是防抖节流的例子吧,是你自己的代码吗,如果是应该不会有疑问。


我之前是忘了apply绑定时会执行前面调用的函数了,那这里就是直接执行fn,然后为了防止fn的this指向发生变化所以重新绑定