¿Es posible vincular una función a otra función en invocación? Por ejemplo, sería algo como esto:Evento invocado por función en JS?
function a(){...}
function b(){...}
b.bind("onInvoke","a");
Así que cuando se llama a b, a también se llama automáticamente.
EDITAR: OK Aceptar, para aclarar, esto no es una cuestión de encadenamiento. La idea es encontrar una manera elegante de hacer el enlace de eventos. Observe la forma normal de "no elegante" con devolución de llamada de función normal:
function handler(){...}
function caller1(){handler(); ...}
function caller2(){handler(); ...}
function caller2(){handler(); ...}
// More callers all over your website everywhere else
Eso funciona ¿verdad? Pero, ¿y si tengo llamadas por todos lados? Es difícil organizar o cambiar cosas.
¡Ahora observe la solución superior! (Si existe)
function handler(){...}
// Caller make no reference to handler on creation
function caller1(){...}
function caller2(){...}
function caller3(){...}
// Caller function are still all over the place, all over your website
// Event handler registered later in one location here, doesn't matter where they are phsically
caller1.bind("onInvoke",handler);
caller2.bind("onInvoke",handler);
caller3.bind("onInvoke",handler);
Muy parecido al registro normal de un evento HTML - JQuery. No escriba onClick en cada imagen en la que el usuario pueda hacer clic (que están por todas partes), ¡sería demasiado problemático organizar eso! Simplemente escriba uno simple
$("img").bind("onClick",click_handler);
para todo su sitio. Esta es la cuestión de lo que estoy buscando, a excepción de las funciones de JS.
Espero aclarar las cosas.
EDIT 2: Necesito trabajar con IE7 !!! JavaScript 1.8.5 es genial y todo, pero nada lo soporta en este momento.
posible duplicado de (http://stackoverflow.com/questions/3406467/can-i-intercept-a-function-called-directly) –
@AndyE Me da la sensación de que OP está más interesado en una solución para llamar automáticamente las funciones en secuencia. – Peter
@Peter: No estoy tan seguro. * "Así que cuando se invoca b, a también se llama automáticamente." * - existe una diferencia potencialmente en el orden de ejecución (esta pregunta puede querer invocar 'a' después de' b', por ejemplo), pero la premisa entre los dos las preguntas parecen ser las mismas; * "cuando se llama a una función, llame a esta otra función" *. Podría estar equivocado, pero depende del OP hacer una clara distinción entre las dos preguntas :-) –