我可以在javascript中扩展控制台对象(用于重新路由日志记录)吗?

pre*_*OFT 29 javascript logging extend

是否可以扩展控制台对象?

我尝试过类似的东西:

Console.prototype.log = function(msg){
    Console.prototype.log.call(msg);
    alert(msg);
}
Run Code Online (Sandbox Code Playgroud)

但这没效果.我想通过像log4javascript这样的框架向控制台对象添加额外的日志记录,并且仍然在我的代码中使用标准控制台对象(在log4javascript不可用的情况下).

提前致谢!

Ser*_*sky 40

试试以下:

(function() {
    var exLog = console.log;
    console.log = function(msg) {
        exLog.apply(this, arguments);
        alert(msg);
    }
})()
Run Code Online (Sandbox Code Playgroud)


Mik*_*ier 11

使用代理模式,请参阅我对类似案例的回答:

JavaScript:覆盖警报()

希望这可以帮助


eds*_*999 5

这实际上与其他人给出的解决方案相同,但我相信这是完成此任务的最优雅且最简单的方法。扩展语法 (...args) 确保不会丢失任何一个参数

var _console={...console}

console.log = function(...args) {
    var msg = {...args}[0];
    //YOUR_CODE
    _console.log(...args);
}
Run Code Online (Sandbox Code Playgroud)