2010-09-26 18 views
88

Lo veo en diferentes plugins y códigos, pero no entiendo qué hace esa función ... ¡En la API de jQuery no se hace referencia!¿Cuál es la función .apply jQuery?

+20

No figura en la referencia de jQuery, ya que es una [** función Javascript nativa **] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply). –

Respuesta

119

apply llama a una función con un conjunto de argumentos. No es parte de jQuery, es parte del núcleo de Javascript. Sin embargo, no hay mención de ello en la documentación de jQuery:

http://docs.jquery.com/Types#Context.2C_Call_and_Apply

Sintaxis:

somefunction.apply(thisObj, [argsArray]) 

Lo anterior llama a la función somefunction, el establecimiento de this a thisObj dentro del ámbito de la función, y que pasa en el argumentos desde argsArray como argumentos para la función.

+2

Relacionado es la función [**. Call() **] (http://mdn.beonex.com/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/call) que también toma 'this', pero se sigue por una serie de argumentos enumerados individualmente en lugar de una matriz que contiene los argumentos. –

+0

¿Qué harás a continuación? $ .when.apply (null, object) .done (devolución de llamada); – user1531437

+0

@ user1531437 Llama a '$ .when (object) .done (callback);', pero en la función '$ .when',' this' está establecido en el primer parámetro, es decir 'null'. Podría decirse que uno debería estar usando '$ .when.call (null, object) .done (callback);' porque el segundo parámetro de '.apply' se supone que es una matriz –

5

Básicamente, aplicar llamará a una función con el contexto establecido en el objeto al que aplica la función. Esto significa que dentro de la función, hacer referencia a this hará referencia a ese objeto.

+0

Para cualquiera que trabaje con jQuery y llegue a esta respuesta, necesitarás usar '$ (this)' para obtener el objeto jQuery asociado y tener acceso a los métodos de jQuery. –

+0

@ R.Schreurs también necesita usar el objeto jQuery.fn como se ve aquí: http://stackoverflow.com/a/27374435/674033 – AVProgrammer

Cuestiones relacionadas