首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apply在这里做什么?

apply在这里做什么?
EN

Stack Overflow用户
提问于 2013-03-06 09:31:43
回答 2查看 110关注 0票数 0

func.apply(this, arguments);在这段代码中具体做了什么?我可以看到,在没有apply的情况下动态调整元素的大小是行不通的,然而,在使用了apply之后,似乎没有对thisarguments做任何进一步的工作。

代码语言:javascript
复制
function throttle (func, wait) {
    var throttling = false;
    return function(){
        if (!throttling){
            func.apply(this, arguments);
            throttling = true;
            setTimeout(function(){
                throttling = false;
            }, wait);            
        }
    };
}

jsbin

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-06 09:36:33

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2013-03-06 09:35:47

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

因此,代码本质上是检查它是否正在节流,如果不是,则将节流设置为真,当超时结束时,将节流设置为假。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15237384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档