在这做什么适用?

时间:2013-03-06 01:31:43

标签: javascript

此代码中func.apply(this, arguments);的具体做法是什么?我可以看到,在没有apply的情况下动态调整元素的大小是不行的,但是,在this之后似乎没有进一步使用argumentsapply使用

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

jsbin

2 个答案:

答案 0 :(得分:2)

.apply允许您为方法调用设置thisarguments值(并立即调用)。这允许您在this的调用者中使用func内的func.apply内容。通常,this内的func将是其他内容(如果它是全局函数,则可能为window。)

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

编辑:在这个特定情况下(jsbin),由于func从不使用this或有任何参数,因此不需要它。您可以使用func()

答案 1 :(得分:1)

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

因此,代码实质上是检查它是否受到限制,如果没有,则将限制设置为true,当超时结束时,将throttle设置为false。