这是一个古老的问题,提供的所有答案都太过分了,存在跨浏览器的重大问题,并且没有提供任何超级有用的东西。该解决方案可在每种浏览器中使用,并完全按需报告所有控制台数据。无需黑客,只需一行代码即可签出prepen。
var debug = console.log.bind(window.console)
像这样创建开关:
isDebug = true // toggle this to turn on / off for global controllif (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 statedebug = 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')}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)