Слушатель функций в javascript и/или jQuery

Интересно, есть ли элегантный способ прослушивания функции в javascript и/или jQuery.

Вместо того, чтобы слушать $('#mything').click(function(){ //blah }), я хотел бы слушать, когда запускается определенная функция. Я не хочу редактировать функцию как в библиотеке, которую я не хочу взламывать напрямую.

Я нашел это: http://plugins.jquery.com/project/jqConnect, который соединяет функции.

Но интересно о лучшей технике.

Ответ 1

Единственный способ сделать это - переопределить функцию (т.е. взломать библиотеку):

(function() {
    var oldVersion = someLibrary.someFunction;
    someLibrary.someFunction = function() {
        // do some stuff
        var result = oldVersion.apply(this, arguments);
        // do some more stuff
        return result;
    };
})();

Изменить:. Чтобы запустить код после выполнения функции библиотеки, сначала вызовите функцию библиотеки, сохранив результат в переменной. Затем запустите свой код и, наконец, верните ранее сохраненный результат. Я обновил свой пример выше, чтобы разместить исполняемый код до или после функции библиотеки.