2010-10-31 15 views
23

each() método de jQuery contiene tal declaración:¿Cuál es el significado de "callback.call (value, i, value)" en jQuery cada método?

callback.call(value, i, value) 

no podía entender lo que significa exactamente esta declaración.

Sé lo que callback y call significan pero no pude obtener los argumentos de la llamada a la función: (value,i,value). ¿Qué significa esto?

La instrucción se utiliza en un bloque para each() pero mi pregunta es independiente de ese contexto.

de la fuente de jQuery:

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

Respuesta

42

El método call existe en todas las funciones en Javascript. Le permite llamar a la función y al hacerlo establecer el valor de this dentro de esa función.

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

myFunc.call(document.body); 

En este ejemplo, this dentro de myFunc habrá document.body. El primer parámetro de call es el valor que se establecerá como this; los parámetros subsiguientes se pasan a la función como parámetros normales. Así, en su ejemplo:

callback.call(value, i, value) 

esto es equivalente a

callback(i, value) 

excepto que, dentro de la devolución de llamada, this ahora también se establece en value.

+0

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

1

El método .each() llama a la devolución de llamada que se pasa con el elemento (iteración actual "objetivo") ya que tanto el objeto de contexto (el valor de this) y como el segundo parámetro.

Por lo tanto, en una de esas funciones:

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

Las variables $this y $elem son intercambiables.

El primer argumento para .call() es el valor al que se debe vincular this, si no está claro. El resto de los argumentos a .call() se pasan como argumentos simples a la función.

1

Esta llama al método callback con this ajustado a value (el primer parámetro a call) y con los argumentos i y value. (Los otros parámetros a call)

Cuestiones relacionadas