覆盖控制台.log();用于生产

2022-08-30 02:58:56

我对Javascript开发相当陌生,所以这可能是一个真正的新手问题。

我有一个应用程序,用于调试目的。console.log();

我有的做我所有的构建时间组合。它输出用于调试的 和 用于生产的app.debug.jsapp.min.js

现在,当我准备进入生产环境时,我可以遍历我所有的代码文件,寻找并手动删除它,但我想知道是否有办法重写该方法。console.log();

基本上,每当调用该方法时,都不执行任何操作。console.log();

这样,我可以将覆盖代码文件放在我的生产配置中,而不是放在我的调试配置中。

这可能吗?


答案 1

将此放在文件的顶部:

var console = {};
console.log = function(){};

对于某些浏览器和微缩器,您可能需要将其应用于窗口对象。

window.console = console;

答案 2

或者,如果您只想重新定义控制台的行为(例如,为了添加日志),则可以执行如下操作:

// define a new console
var console=(function(oldCons){
    return {
        log: function(text){
            oldCons.log(text);
            // Your code
        },
        info: function (text) {
            oldCons.info(text);
            // Your code
        },
        warn: function (text) {
            oldCons.warn(text);
            // Your code
        },
        error: function (text) {
            oldCons.error(text);
            // Your code
        }
    };
}(window.console));

//Then redefine the old console
window.console = console;