此代码中func.apply(this, arguments);
的具体做法是什么?我可以看到,在没有apply
的情况下动态调整元素的大小是不行的,但是,在this
之后似乎没有进一步使用arguments
或apply
使用
function throttle (func, wait) {
var throttling = false;
return function(){
if (!throttling){
func.apply(this, arguments);
throttling = true;
setTimeout(function(){
throttling = false;
}, wait);
}
};
}
答案 0 :(得分:2)
.apply
允许您为方法调用设置this
和arguments
值(并立即调用)。这允许您在this
的调用者中使用func
内的func.apply
内容。通常,this
内的func
将是其他内容(如果它是全局函数,则可能为window
。)
此外,.apply
允许您使用数组设置参数,因此您不必提前知道参数列表。
编辑:在这个特定情况下(jsbin),由于func
从不使用this
或有任何参数,因此不需要它。您可以使用func()
。
答案 1 :(得分:1)
throttle()函数返回一个匿名函数。因此,apply允许匿名函数再次调用自身并将原始参数传递给它。
因此,代码实质上是检查它是否受到限制,如果没有,则将限制设置为true,当超时结束时,将throttle设置为false。