簡體   English   中英

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

[英]What is the meaning of “callback.call( value, i, value )” in jQuery's each method?

jQuery中的each()方法包含這樣一個語句:

callback.call( value, i, value ) 

我無法理解這句話到底意味着什么。

我知道callbackcall是什么意思,但我無法得到函數調用的參數: (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的第一個參數)並使用參數ivalue (要call的其他參數)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM