Javascript 你在这里干什么?

Javascript 你在这里干什么?,javascript,Javascript,func.apply(这是参数)的具体应用在这个代码中做什么?我可以看出,如果不使用apply,动态调整元素的大小是不可行的,但是,在使用apply之后,似乎对这个或参数没有进一步的操作 function throttle (func, wait) { var throttling = false; return function(){ if (!throttling){ func.apply(this, arguments);

func.apply(这是参数)的具体应用在这个代码中做什么?我可以看出,如果不使用
apply
,动态调整元素的大小是不可行的,但是,在使用
apply
之后,似乎对
这个
参数
没有进一步的操作

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

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

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

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

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

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

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

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

即可设置方法调用的
this
参数值(并立即调用)。这允许您在
func.apply的调用者中使用与
func.apply的调用者相同的
this
内部
。通常,
这个
func
里面会是其他的东西(如果它是一个全局函数,可能是
窗口

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



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

它所做的就是
.apply
总是做的事情。仅仅因为这里没有使用
this
和传递的参数,并不意味着它们没有在
func
代码中使用。你有函数
func
的代码吗?@bfavaretto它的jsbin链接中的it
resize_columns()
。@Dre为什么添加jQuery标记?@thomas:
throttle
是通用的,因此,如果您传递一个预期参数或预期值为
this
的函数,则返回的函数将确保在调用原始函数时传递这些值。它执行
.apply
始终执行的操作。仅仅因为这里没有使用
this
和传递的参数,并不意味着它们没有在
func
代码中使用。你有函数
func
的代码吗?@bfavaretto它的jsbin链接中的it
resize_columns()
。@Dre为什么添加jQuery标记?@thomas:
throttle
是通用的,因此,如果您传递的函数预期参数或预期值为
this
,则返回的函数在调用原始函数时一定会传递这些值。我相信他知道
apply
的功能。他在问为什么在这里使用它,我想这是没有理由的。@gdoron很难说;取决于
func
是什么(以及
this
通常在
func
中是什么)以及返回函数的调用方式。在jsbin中,我看不到在哪里使用
this
,或者为什么删除它会破坏任何东西
resize_columns()
(func
所指的内容)不接受参数。谢谢。@thomas,如果你只使用
func()
它就可以了。。你最初是怎么想到这些代码的?这是一个多年前为我设计的函数,但随着我开始尝试理解闭包,我把它挖了出来,看看现在是否能更好地理解它。我只是想得到进一步的解释。或者用不同的措辞,这样我就可以试着从另一个角度来理解它。我相信他知道
apply
做什么。他在问为什么在这里使用它,我想这是没有理由的。@gdoron很难说;取决于
func
是什么(以及
this
通常在
func
中是什么)以及返回函数的调用方式。在jsbin中,我看不到在哪里使用
this
,或者为什么删除它会破坏任何东西
resize_columns()
(func
所指的内容)不接受参数。谢谢。@thomas,如果你只使用
func()
它就可以了。。你最初是怎么想到这些代码的?这是一个多年前为我设计的函数,但随着我开始尝试理解闭包,我把它挖了出来,看看现在是否能更好地理解它。我只是想得到进一步的解释。或者用不同的措辞,这样我可以试着从另一个角度来理解它。这是正确的答案。为了扩展代码的功能,它确保不会在每次发布window.resize事件时尝试调整大小(这会导致速度减慢)。相反,它等待查看自上次调整大小事件以来是否已通过n ms,以尝试推断用户是否已停止调整窗口大小。油门代码似乎是独立于调整大小代码编写的,因为原始问题中的代码示例不需要任何参数来“生存”迭代。@chris mv:Sort。匿名函数从不调用自身。它调用原始函数th