我正在编写一个体面的JavaScript动画库,我想在其中包含调试代码。我可以轻松地进行检查:
if(myLib.debugger){
console.warn('warning message');
}
但是,如果每秒运行几千次,最终会导致性能问题。在整个代码中添加一些检查,效果将更加明显。
我想知道的是,如果应该启用调试器,是否可以检查onload,如果是这样的话......转到这样的话:
//debugger if(!this.name) console.warn('No name provided');
成:
if(!this.name) console.warn('No name provided');
如果代码未启用,则将代码注释掉,如果是,则取消注释,从而消除任何可能的性能问题。如果通过ajax加载,可以用整个脚本上的正则表达式以某种方式完成吗?我试图避免需要2个版本的相同代码,lib.dbug.js和lib.js.
跨浏览器兼容性对此并不重要(我真的只担心新的浏览器),我认为有一个项目很好。如果可能的话,那将是一件好事。
非常感谢任何见解。
答案 0 :(得分:2)
执行此操作的最简单方法是检查是否应禁用调试器,如果是,请将其替换为在脚本刚开始时不执行任何操作的模拟对象:
if (!myLib.debugger) {
window.console = (function () {
var newConsole = {};
var key;
for (key in window.console) {
if (typeof window.console[key] === 'function') {
newConsole[key] = function () {};
}
}
return newConsole;
}());
}
这种方法的开销应该可以忽略不计。
答案 1 :(得分:1)
如果这是一个JavaScript库...那么我希望作为第三方开发者,我可以下载/使用2个版本。生产版本(无调试,AND最小化)。如果我想调试,我会指向库的调试版本。
e.g。
<script src="foo-lib-min.js"></script>
<!-- swap to this for debugging <script src="foo-lib-full.js"></script>-->