Javascript 记录jQuery中调用的方法和参数

Javascript 记录jQuery中调用的方法和参数,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,假设我已经加载了jQuery和几个插件 我运行的代码如下: $('someSelector').someMethod('someParam', 'someOtherParam'); $('someOtherSelector').someOtherMethod('anotherParam'); $('anotherSelector').anotherMethodWhichMayOrMayNotBeAPlugin(); 我想为jQuery编写一个钩子,以便记录一个我将保存的结构: 使用了什么选择

假设我已经加载了jQuery和几个插件

我运行的代码如下:

$('someSelector').someMethod('someParam', 'someOtherParam');
$('someOtherSelector').someOtherMethod('anotherParam');
$('anotherSelector').anotherMethodWhichMayOrMayNotBeAPlugin();
我想为jQuery编写一个钩子,以便记录一个我将保存的结构:

  • 使用了什么选择器
  • 调用了哪个方法
  • 它得到了什么论据
我知道我可以覆盖
$()
来捕获选择器,也可以向jQuery添加方法(通过编写插件),但我不完全确定如何获取方法的名称和参数,同时避免破坏jQuery及其插件的现有功能


性能对于这个函数来说不是很重要,所以任何动态方法都可以。您可以迭代
$.fn中的所有函数,并用自己的函数替换它们

该函数反过来可以记录调用它的jQuery对象的选择器及其收到的参数,然后调用原始函数

比如:

$.each($.fn, function(key, func) {
    if ($.isFunction(func)) {
        $.fn[key] = function() {
            console.log("Method '" + key + "' was called");
            console.log("  on selector '" + this.selector + "'");
            console.log("  with arguments: " + arguments);
            return func.apply(this, arguments);
        };
    }
});

检测选择器和$()的使用是相当容易的,其他方法和插件在这里造成了问题。我很好奇是否有人会想出一些想法。在我接受它之前,我必须先测试它,但它看起来很有前途,而且非常简单(因此应该很容易调试),这是一个不错的解决方案。