0

このコードでは具体的に何func.apply(this, arguments);をしますか?がないと要素のサイズを動的に変更できないことがわかりますが、使用した後、または使用した後はapply何も行われていないようです。thisargumentsapply

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メソッド呼び出しのthisと値を設定できます(そしてすぐに呼び出します)。これにより、の呼び出し元で使用されているものargumentsと同じthis内部を使用できます。通常、内部は別のものになります(おそらくそれがグローバル関数である場合)。funcfunc.applythisfuncwindow

さらに、.apply配列を使用して引数を設定できるため、事前に引数リストを知る必要はありません。

編集:この特定のケース(jsbin)では、引数funcを使用したり持ったりすることはないため、必要ありません。thisを使用できますfunc()

于 2013-03-06T01:36:33.050 に答える
1

スロットル()関数は無名関数を返しています。したがって、applyを使用すると、無名関数がそれ自体を再度呼び出して、元の引数を渡すことができます。

したがって、コードは基本的にスロットルしているかどうかをチェックし、そうでない場合はスロットルをtrueに設定し、タイムアウトが終了したらスロットルをfalseに設定します。

于 2013-03-06T01:35:47.320 に答える