2010-10-31 82 views
23

each()方法包含了這樣的語句:在jQuery的每種方法中,「callback.call(value,i,value)」是什麼意思? jQuery中

callback.call(value, i, value) 

我不明白這是什麼表態意味着完全相同。

我知道callbackcall是什麼意思,但我無法獲得函數調用的參數:(value,i,value)。這是什麼意思?

該聲明用於each()區塊,但我的問題與該上下文無關。

從jQuery源:

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

回答

42

call方法存在於Javascript的所有函數中。它允許您調用該函數,並在此功能中設置this的值。

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

myFunc.call(document.body); 

在這個例子中,內thismyFunc將是document.body

call的第一個參數是要設置爲this的值;後續參數作爲正常參數傳遞給函數。所以,在你的榜樣:

callback.call(value, i, value) 

這相當於

callback(i, value) 

只是,在回調中,this現在也設置爲value

+0

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call – Abdull 2013-03-31 01:30:17

1

.each()方法調用你與元件(當前迭代「目標」)既作爲上下文對象(的this的值)傳遞給它的回調和作爲第二參數。

因此,在這些功能中的一個:

$('.foo').each(function(i, elem) { 
    var $this = $(this), $elem = $(elem); 

變量$this$elem是可互換的。

.call()的第一個參數是this應該綁定的值,如果不明確的話。 .call()的其餘參數僅作爲參數傳遞給函數。

1

這將調用callback方法與this設置爲value(的第一個參數call),並用參數ivalue。 (其他參數爲call