gpt4 book ai didi

javascript - 即时将 console.profile 语句添加到 JavaScript/jQuery 代码中

转载 作者:行者123 更新时间:2023-11-29 22:40:45 25 4
gpt4 key购买 nike

我们有一个大量使用 jQuery 的胖客户端应用程序,并希望使用 firebug 的 console.profile API 分析代码的性能。问题是,我不想更改代码来编写配置文件语句。举个例子:

var search=function(){    this.init=function(){        console.log('init');    }    this.ajax=function(){        console.log('ajax');        //make ajax call using $.ajax and do some DOM manipulations here..    }    this.cache=function(){        console.log('cache');    }}var instance=new search();instance.ajax();

我想分析我的 instance.ajax 方法,但我不想在代码中添加分析语句,因为这会使代码难以维护。

我正在尝试使用闭包覆盖方法,如下所示:http://www.novogeek.com/post/2010/02/27/Overriding-jQueryJavaScript-functions-using-closures.aspx但我不太确定我该如何实现。对此有任何指示吗?我认为这将有助于许多大型项目轻松地分析代码,而无需对代码进行大的更改。

这是一个想法。只需在 firebug 控制台中运行以下代码,即可了解我要实现的目标。

var search=function(){    this.init=function(){        console.log('init');    }    this.ajax=function(){        console.log('ajax');        //make ajax call using $.ajax and do some DOM manipulations here..    }    this.cache=function(){        console.log('cache');    }}var instance=new search();$.each(instance, function(functionName, functionBody){    (function(){        var dup=functionBody        functionBody=function(){            console.log('modifying the old function: ',functionName);            console.profile(functionName);            dup.apply(this,arguments);            console.profileEnd(functionName);        }    })();    console.log(functionName, '::', functionBody());});

现在我需要的是,如果我说 instance.ajax(),我希望调用新的 ajax() 方法以及 console.profile 语句。希望我清楚这个要求。请即兴发挥以上代码。

问候,奎师那, http://www.novogeek.com

最佳答案

如果您只想修改“搜索”的单个实例,那么这应该可行:

$.each(instance, function(name, method){
if (typeof method !== 'function') return;
instance[name] = function() {
console.profile(name);
var ret = method.apply(this, arguments);
console.profileEnd(name);
return ret;
};
});

关于javascript - 即时将 console.profile 语句添加到 JavaScript/jQuery 代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com