为什么要在里面重新绑定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指向发生变化所以重新绑定