javascript和/或jQuery中的函数侦听器

javascript和/或jQuery中的函数侦听器,javascript,javascript-events,event-handling,jquery,Javascript,Javascript Events,Event Handling,Jquery,想知道是否有一种优雅的方式来监听javascript和/或jQuery中的函数 而不是侦听$(“#mything”)。单击(function(){//blah})我希望侦听特定函数何时被触发。我不想编辑这个函数,因为它在一个我不想直接破解的库中 我确实发现了这个:它连接函数 但是想知道一种更好的技术。实现这一点的唯一方法是重写函数(即,破解库): 编辑:要在库函数运行后运行代码,只需先调用库函数,将结果存储在变量中即可。然后,运行代码,最后返回先前存储的结果。我已经更新了上面的示例,以适应在库函

想知道是否有一种优雅的方式来监听javascript和/或jQuery中的函数

而不是侦听
$(“#mything”)。单击(function(){//blah})
我希望侦听特定函数何时被触发。我不想编辑这个函数,因为它在一个我不想直接破解的库中

我确实发现了这个:它连接函数


但是想知道一种更好的技术。

实现这一点的唯一方法是重写函数(即,破解库):


编辑:要在库函数运行后运行代码,只需先调用库函数,将结果存储在变量中即可。然后,运行代码,最后返回先前存储的结果。我已经更新了上面的示例,以适应在库函数之前或之后运行的代码。

如果返回值很重要,您可能应该返回调用旧版本的值。这很好,而且完全可以在无需破解库的情况下运行。。。但是,这意味着必须在库函数运行之前发生by事件。我希望它运行,然后应用我的检查和修改。@doublejosh-我刚才才看到你的评论。我已经更新了我的答案以回应您的评论。2个问题:如果函数是匿名的(例如,它是对单击侦听器的回调),那么没有明显的方法,对吗?第二个问题,它是100%透明的,还是在这样做的时候我应该注意一些警告(范围的改变,
这个
,诸如此类的东西)?@JodyHeavener-一般来说,是的,逻辑仍然适用。而且,不,我不认为它会对性能产生影响。
(function() {
    var oldVersion = someLibrary.someFunction;
    someLibrary.someFunction = function() {
        // do some stuff
        var result = oldVersion.apply(this, arguments);
        // do some more stuff
        return result;
    };
})();