这是一个老问题,提供的所有答案都过于骇人听闻,存在重大的跨浏览器问题,并且没有提供任何非常有用的信息。此解决方案适用于所有浏览器,并完全按照应有的方式报告所有控制台数据。不需要 hacks 和一行代码查看 codepen。
var debug = console.log.bind(window.console)
像这样创建开关:
isDebug = true // toggle this to turn on / off for global controll
if (isDebug) var debug = console.log.bind(window.console)
else var debug = function(){}
然后简单地调用如下:
debug('This is happening.')
您甚至可以使用这样的开关来接管 console.log:
if (!isDebug) console.log = function(){}
如果你想用它做一些有用的事情..你可以添加所有控制台方法并将其包装在一个可重用的函数中,该函数不仅提供全局控制,还提供类级别:
var Debugger = function(gState, klass) {
this.debug = {}
if (gState && klass.isDebug) {
for (var m in console)
if (typeof console[m] == 'function')
this.debug[m] = console[m].bind(window.console, klass.toString()+": ")
}else{
for (var m in console)
if (typeof console[m] == 'function')
this.debug[m] = function(){}
}
return this.debug
}
isDebug = true //global debug state
debug = Debugger(isDebug, this)
debug.log('Hello log!')
debug.trace('Hello trace!')
现在您可以将其添加到您的课程中:
var MyClass = function() {
this.isDebug = true //local state
this.debug = Debugger(isDebug, this)
this.debug.warn('It works in classses')
}