繁体   English   中英

在jQuery的每个方法中,“callback.call(value,i,value)”是什么意思?

[英]What is the meaning of “callback.call( value, i, value )” in jQuery's each method?

jQuery中的each()方法包含这样一个语句:

callback.call( value, i, value ) 

我无法理解这句话到底意味着什么。

我知道callbackcall是什么意思,但我无法得到函数调用的参数: (value,i,value) 这是什么意思?

该语句用于each()的for块,但我的问题与该上下文无关。

来自jQuery源代码:

for ( var value = object[0];
      i < length &&
      callback.call( value, i, value ) // <=== LOOK!
      !== false;
      value = object[++i] ) {}

call方法存在于Javascript中的所有函数中。 它可以让你要调用的函数,这样做的设定值this该函数内。

function myFunc() {
    console.log(this);
}

myFunc.call(document.body);

在这个例子中, myFunc this将是document.body

的第一个参数call是要被设置为的值this ; 后续参数作为普通参数传递给函数。 所以,在你的例子中:

callback.call( value, i, value )

这相当于

callback(i, value)

不同之处在于,在回调中, this现在也设置value

.each()方法使用元素(当前迭代“target”)作为上下文对象( this的值)和第二个参数调用您传递的回调。

因此,在其中一个功能中:

$('.foo').each(function(i, elem) {
  var $this = $(this), $elem = $(elem);

变量$this$elem是可互换的。

到的第一个参数.call()是其值this应绑定,如果不明确。 .call()的其余参数只是作为普通参数传递给函数。

这将调用callback方法, this set设置为value (要call的第一个参数)并使用参数ivalue (要call的其他参数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM