func.apply(this, arguments);在这段代码中具体做了什么?我可以看到,在没有apply的情况下动态调整元素的大小是行不通的,然而,在使用了apply之后,似乎没有对this或arguments做任何进一步的工作。
function throttle (func, wait) {
var throttling = false;
return function(){
if (!throttling){
func.apply(this, arguments);
throttling = true;
setTimeout(function(){
throttling = false;
}, wait);
}
};
}jsbin
发布于 2013-03-06 09:36:33
.apply允许您为方法调用设置this和arguments值(并立即调用)。这允许您在func内部使用与func.apply调用方相同的this。通常,func中的this是其他函数(如果它是一个全局函数,则可能是window )。
此外,.apply允许您使用数组设置参数,因此您不必提前知道参数列表。
this:在这种特定情况下( jsbin)不需要它,因为func从不使用jsbin,也不会有任何参数。您可以只使用func()。
发布于 2013-03-06 09:35:47
throttle()函数返回一个匿名函数。所以apply允许匿名函数再次调用自己,并将原始参数传递给它。
因此,代码本质上是检查它是否正在节流,如果不是,则将节流设置为真,当超时结束时,将节流设置为假。
https://stackoverflow.com/questions/15237384
复制相似问题