2010-10-31 9 views
23

each() metodo in jQuery contiene una simile affermazione:Qual è il significato di "callback.call (value, i, value)" in ogni metodo di jQuery?

callback.call(value, i, value) 

non riuscivo a capire che cosa significa esattamente questa informativa.

So che cosa significa callback e call ma non ho potuto ottenere gli argomenti della chiamata di funzione: (value,i,value). Cosa significa questo?

L'istruzione viene utilizzata in un blocco di each() ma la mia domanda è indipendente da tale contesto.

dalla fonte jQuery:

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

risposta

42

Il metodo call esiste su tutte le funzioni in Javascript. Ti permette di chiamare la funzione e così facendo imposta il valore di this all'interno di quella funzione.

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

myFunc.call(document.body); 

In questo esempio, this entro myFunc sarà document.body.

Il primo parametro di call è il valore da impostare come this; i parametri successivi vengono passati alla funzione come parametri normali. Quindi, nel tuo esempio:

callback.call(value, i, value) 

questo equivale a

callback(i, value) 

eccezione del fatto che, all'interno del callback, this è ora anche impostato value.

+0

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call – Abdull

1

Il metodo .each() chiama la richiamata si passa con l'elemento (iterazione di "target") sia come oggetto di contesto (il valore di this) e come la seconda parametro.

Così, in una di queste funzioni:

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

Le variabili $this e $elem sono intercambiabili.

Il primo argomento a .call() è il valore a cui deve essere associato this, se non era chiaro. Il resto degli argomenti a .call() vengono passati come semplici argomenti alla funzione.

1

Questo chiama il metodo callback con this impostato value (il primo parametro call) e con gli argomenti i e value. (Gli altri parametri a call)