Вот наглядный пример:
<a href="#" id="link">Link</a>
<script>
EventHandler.add(document.getElementById("link"), click, checkAction);
function checkAction(){
// функция перехватывает действие пользователя
// что-то делает...
// может проверяет форму, если вместо <a> перехватила <form>
// И теперь функция хочет проверить, не закончилась ли сессия пользователя
// Она обращается к модулю из общей библиотеки
// и передает ему элемент, с которого перехватила событие click или submit
return issetSeance(this);
}
/******/
function issetSeance(elem){
// упрощенно: если у переданного элемента нет метода click или submit
// просто вернуть true и не отменять действие пользователя
if(!elem.click || !elem.submit){return true;}
// если указанные методы присутствуют, то запустить модуль проверки авторизации
checkLogin(elem);
return false;
}
function checkLogin(elem){
// тут общаемся с сервером
// в случае успеха делаем
elem.click() // если не форма
elem.submit() // если форма
}
</script>