EDIT: Bueno, yo creo que las soluciones siguientes son válidos:Javascript enlaces de funciones
utilizar el plugin jQuery AOP. Básicamente, envuelve la función anterior junto con el gancho en un sándwich de función y lo reasigna al nombre de la función anterior. Esto causa la anidación de funciones con cada nuevo gancho adicional.
Si jQuery no se puede utilizar para usted, simplemente saquee el código fuente, no parece haber ninguna dependencia de jQuery en el complemento, y la fuente es simple y muy pequeña.Tienen un objeto que describe todos los ganchos y sus destinos y uno para almacenar la función inicial no modificada. Al agregar un nuevo gancho, el envoltorio se volvería a hacer alrededor de la función original, en lugar de volver a envolver la función de envoltura anterior.
Usted escapa de las funciones anidadas, y obtiene dos objetos para manejar en su lugar. Potencialmente, esto también podría significar un manejo de gancho más fácil, si agrega/elimina ganchos a menudo y fuera de servicio.
Voy a ir con el primero, ya que ya está hecho, y no tengo el rendimiento que preocuparse. Y dado que las funciones originales no se ven afectadas, incluso si cambio los métodos de enganche, solo tendré que volver a hacer la adición del gancho, que podría ser simplemente una búsqueda simple & reemplazar operaciones.
Hola,
¿Es posible crear un mecanismo, en el que funcionará A podría tener una serie de ganchos (funciones que se ejecutarán antes/después de la función A)?
Lo ideal es que la función A no tenga en cuenta la funcionalidad de enganche, por lo que no es necesario modificar el código fuente de la función A para llamar a los enganches. Algo como:
A = function(){
alert("I'm a naive function");
};
B = function(){
alert("I'm having a piggyback ride on function A!"+
"And the fool doesn't even know it!");
};
addHook(B, A)//add hook B to function A
A()
//getting alerts "I'm a naive function"/"I'm having a
//piggyback ride on function A! And the fool doesn't even know it!"
He intentado hackear algo durante un par de horas, pero hasta ahora no tuve suerte.
esta es una buena pregunta, Altho i duda habrá una respuesta positiva. Sin duda puede hacerlo, pero con algún tipo de solución. Estoy marcando esto. –