2011-05-16 36 views
15

¿Cómo se pueden pasar parámetros a una función cuando se usa .call() en Javascript?jquery - pasa los parámetros al usar .call()

Cuando paso parámetros que siempre no están definidos en la función de devolución de llamada

EDITAR (un ejemplo):

voy a tener un objeto opciones en mi plugin:

var options = { 

errorCallback : function(errors) {} 

} 

que llamaré esto de mi plugin como este:

var errors = "Test error list"; 
configs.errorCallback.call(errors); 

I will initialise my pl ugin como este

$('#plugin-element').myPlugin(
     { 
      'errorCallback' : function errorrCallbackFunction(errors) { 
        console.log(errors) //always undefined 
       } 
     } 
+3

¿Puedes dar un ejemplo de lo que haces que no funciona? – lonesomeday

+0

Función de devolución de llamada? ¿Qué función de devolución de llamada? Y .call() no es específico de jQuery, es una función de JavaScript (o, para ser más precisos, es un método del objeto de función). – PJP

Respuesta

38

El primer argumento de llamada es el "esto" de la función. Si quiere pasar la variable como argumento, comience desde la segunda.

configs.errorCallback.call(undefined, errors); 

Aquí está la documentación: Function.prototype.call()

10
configs.errorCallback.call(errors); 

Esto no es necesario. Solo necesita usar call si desea establecer el contexto de la llamada a función. Eso significa el valor de this dentro de la devolución de llamada.

Si no desea establecer this, a continuación, puedes llamar a la función como lo haría normalmente:

configs.errorCallback(errors); 

Si desea establecer this, entonces usted necesita para establecerlo como el primer parámetro a call. Los parámetros posteriores se transmiten a la función.

Por ejemplo:

var configs = { 
    errorCallback : function(errors) {} 
}; 
configs.errorCallback.call(configs, errors); 

Dentro errorCallback, puede acceder a configs usando la palabra clave this.

Cuestiones relacionadas