关于节流函数
最近再学习作图片懒加载,其中要做滚动函数节流,看到这样一段代码
// 简单的节流函数
//fun 要执行的函数
//delay 延迟
//time 在time时间内必须执行一次
function throttle(fun, delay, time) {
var timeout,
startTime = new Date();
return function() {
var context = this,
args = arguments,
curTime = new Date();
clearTimeout(timeout);
// 如果达到了规定的触发时间间隔,触发 handler
if (curTime - startTime >= time) {
fun.apply(context, args);
startTime = curTime;
// 没达到触发间隔,重新设定定时器
} else {
timeout = setTimeout(fun, delay);
}
};
};
// 实际想绑定在 scroll 事件上的 handler
function lazyload(event) {}
// 采用了节流函数
window.addEventListener('scroll',throttle(lazyload,500,1000));
别的都能看懂,但是里面var content=this
那里没看懂,这里的this
不是window
吗?后面fun.apply(content,args);
岂不是把fun
的this
绑定为window
;这样有什么目的? 前端小白,求指导
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
很多工具的函数实现上都会用到this,这里我觉得主要考虑的是万一传入的fun函数,带有this的调用呢?
比如 传入的fun 绑定了this
两者结果是不一样的。这里就是 throttle在实现上做了关于this的绑定处理。
因为不一定只用到 window 上,这样写其它元素也可以使用。