![](/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.