Czy można powiązać funkcję z inną funkcją przy wywołaniu? Na przykład może to wyglądać mniej więcej tak:Zdarzenie wywoływane funkcji w JS?
function a(){...}
function b(){...}
b.bind("onInvoke","a");
Tak więc, gdy zostanie wywołane b, a jest również automatycznie wywoływana.
EDYCJA: OK, aby wyjaśnić, nie jest to pytanie dotyczące łańcucha. Chodzi o to, aby znaleźć elegancki sposób na wiązanie zdarzeń. Przestrzegaj normalnego "nie-eleganckiego" sposobu z normalnym oddzwonieniem:
function handler(){...}
function caller1(){handler(); ...}
function caller2(){handler(); ...}
function caller2(){handler(); ...}
// More callers all over your website everywhere else
To działa poprawnie? Ale co, jeśli mam dzwoniącego wszędzie? Trudno organizować lub zmieniać rzeczy.
Teraz obserwuj najlepsze rozwiązanie! (Jeśli taki istnieje)
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);
Tak bardzo przypomina normalną rejestrację zdarzeń HTML - JQuery. Nie piszesz na każdym obrazku, na który użytkownik może kliknąć (w każdym miejscu), byłoby to zbyt kłopotliwe, aby to zorganizować! Po prostu napisz jedną prostą jednostkę dla całej witryny. To jest jist tego, czego szukam, z wyjątkiem funkcji JS.
Mam nadzieję, że to wyjaśni.
EDYCJA 2: Potrzeba pracy z IE7 !!! JavaScript 1.8.5 jest świetny i ma wszystko, ale teraz nic go nie obsługuje.
możliwe duplikat (http://stackoverflow.com/questions/3406467/can-i-intercept-a-function-called-directly) –
@AndyE Mam wrażenie, że OP jest bardziej zainteresowany rozwiązaniem automatycznego wywoływania funkcji po kolei. – Peter
@Peter: Nie jestem tego taki pewien. * "Więc kiedy b jest wywoływane, a jest również automatycznie wywoływane." * - istnieje potencjalnie różnica w kolejności wykonywania (to pytanie może na przykład wywołać 'a' po' b'), ale przesłanka między tymi dwoma pytania wydają się być takie same; * "gdy wywoływana jest funkcja, wywołaj tę inną funkcję" *. Mogę się mylić, ale to OP musi wyraźnie rozróżnić te dwa pytania :-) –