![](/img/trans.png)
[英]jQuery: What's the meaning of comparison in following code block - callback && function() {callback.call();}
[英]What is the meaning of “callback.call( value, i, value )” in jQuery's each method?
jQuery中的each()
方法包含这样一个语句:
callback.call( value, i, value )
我无法理解这句话到底意味着什么。
我知道callback
和call
是什么意思,但我无法得到函数调用的参数: (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
的第一个参数)并使用参数i
和value
。 (要call
的其他参数)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.