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

Mer*_*glu 28 javascript jquery functional-programming

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

callback.call( value, i, value ) 
Run Code Online (Sandbox Code Playgroud)

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

我知道callbackcall意思,但我不能让函数调用的参数:(value,i,value).这是什么意思?

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

来自jQuery源代码:

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

lon*_*day 48

call方法存在于Javascript中的所有函数中.它允许您调用该函数,并在此过程中设置该this函数的值.

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

myFunc.call(document.body);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,将this在内.myFuncdocument.body

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

callback.call( value, i, value )
Run Code Online (Sandbox Code Playgroud)

这相当于

callback(i, value)
Run Code Online (Sandbox Code Playgroud)

除了在回调中,this现在也设置为value.