function throttle(fn,interval){
var timer,
isFirst = true;
return function(){
//////////////////////////////////////////////////////////////////////
var args = arguments, 就是这里了
that = this;
///////////////////////////////////////////////////////////////////////
if(isFirst){
fn.apply(that,args)
return isFirst = false
}
if(timer){
return
}
timer = setTimeout(() => {
clearTimeout(timer)
timer = null
fn.apply(that,args)
}, interval || 1000);
}
}
首先你要明白,
throttle的功能是接受一个函数并返回一个新的函数,这个函数有节流的功能
。用法会是这样:
所以你说的arguments其实就是
关于this,个人感觉this应该取决于生成函数时候的执行方式,
throttle(handleClick, 2000)
, 所以this就是window。 而不是如你写的取决于最终函数throttledHandleClick
的调用方式。如果按照我的理解应该这么写: