each()
方法包含这样的语句:
callback.call( value, i, value )
我无法理解这句话到底意味着什么。
我知道callback
和call
是什么意思,但我无法得到函数调用的参数:(value,i,value)
。这是什么意思?
该语句用于each()
的for块,但我的问题与该上下文无关。
:
for ( var value = object[0];
i < length &&
callback.call( value, i, value ) // <=== LOOK!
!== false;
value = object[++i] ) {}
答案 0 :(得分:46)
Javascript中的所有函数都存在call
方法。它允许您调用该函数,并在此过程中设置该函数中this
的值。
function myFunc() {
console.log(this);
}
myFunc.call(document.body);
在此示例中,this
中的myFunc
将为document.body
。
call
的第一个参数是要设置为this
的值;后续参数作为普通参数传递给函数。所以,在你的例子中:
callback.call( value, i, value )
这相当于
callback(i, value)
除了在回调中,this
现在也设置为value
。
答案 1 :(得分:1)
.each()
方法使用元素(当前迭代“target”)作为上下文对象(this
的值)和第二个参数调用您传递的回调。
因此,在其中一个职能中:
$('.foo').each(function(i, elem) {
var $this = $(this), $elem = $(elem);
变量$this
和$elem
可以互换。
.call()
的第一个参数是this
应绑定的值,如果不清楚的话。 .call()
的其余参数只是作为函数的普通参数传递。
答案 2 :(得分:1)
这会调用callback
方法,this
设置为value
(call
的第一个参数),参数i
和{{1} }。 (value
)的其他参数