0

这段代码具体做了什么func.apply(this, arguments);?我可以看到,如果没有 ,就无法动态调整元素的大小apply,但是,似乎使用thisarguments之后没有做任何进一步的事情apply

function throttle (func, wait) {
    var throttling = false;
    return function(){
        if (!throttling){
            func.apply(this, arguments);
            throttling = true;
            setTimeout(function(){
                throttling = false;
            }, wait);            
        }
    };
}

jsbin

4

2 回答 2

2

.apply允许您为方法调用设置thisarguments值(并立即调用它)。这允许您使用与调用者相同的this内部。通常,inside of会是别的东西(也许如果它是一个全局函数)。funcfunc.applythisfuncwindow

此外,.apply允许您使用数组设置参数,因此您不必提前知道参数列表。

编辑:在这种特定情况下(jsbin)不需要它,因为func从不使用this或有任何参数。你可以只使用func().

于 2013-03-06T01:36:33.050 回答
1

throttle() 函数返回一个匿名函数。因此 apply 允许匿名函数再次调用自身并将原始参数传递给它。

所以代码本质上是检查它是否在节流,如果没有,则将节流设置为 true,当超时结束时,将节流设置为 false。

于 2013-03-06T01:35:47.320 回答