Mer*_*glu 28 javascript jquery functional-programming
each()
jQuery中的方法包含这样一个语句:
callback.call( value, i, value )
Run Code Online (Sandbox Code Playgroud)
我无法理解这句话到底意味着什么.
我知道callback
和call
意思,但我不能让函数调用的参数:(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
在内.myFunc
document.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
.