¿Es posible pasar una función de JavaScript con parámetros como parámetro?
Ejemplo:
$(edit_link).click( changeViewMode( myvar ) );
javascript
Lucia
fuente
fuente
Respuestas:
Use un "cierre":
Esto crea un contenedor de funciones temporal anónimo que conoce el parámetro y lo pasa a la implementación real de devolución de llamada.
fuente
this.myFunction = this.myFunction.bind(this)
en suconstructor
método. Pero, como dijiste, cuando tienes que pasar diferentes contextos para cada uno, como todas las filas diferentes en las que haces clic para abrir la página de detalles de esa fila, no es evitable.Uso
Function.prototype.bind()
. Citando a MDN:Es compatible con todos los principales navegadores, incluido IE9 +.
Su código debería verse así:
Nota al margen: supongo que está en un contexto global, es decir, la
this
variable eswindow
; de lo contrario, use enthis
lugar denull
.fuente
$.ajax(url).done(handler.bind(this, var1, var2));
No, pero puede pasar uno sin parámetros y hacer esto:
Entonces, pasa una función anónima sin parámetros, esa función llama a su función parametrizada con la variable en el cierre
fuente
Sí, así:
fuente
O si está utilizando es6, debería poder utilizar una función de flecha
fuente
Puedes hacerlo
y entonces
O si su devolución de llamada contiene una lógica más flexible, puede pasar el objeto.
Manifestación
fuente
Este es un ejemplo siguiendo el enfoque de Ferdinand Beyer:
En este ejemplo, el "valor del parámetro" se pasa de la función1 a la función3 a través de la función2 utilizando un ajuste de función.
fuente