Il s'agit d'une vieille question et toutes les réponses fournies sont trop bricolées, ont des problèmes MAJEURS de croisement de navigateurs et ne fournissent rien de super utile. Cette solution fonctionne dans tous les navigateurs et rapporte toutes les données de la console exactement comme il se doit. Aucun piratage nécessaire et une seule ligne de code Vérifiez le codepen .
var debug = console.log.bind(window.console)
Créez le commutateur comme ceci :
isDebug = true // toggle this to turn on / off for global controll
if (isDebug) var debug = console.log.bind(window.console)
else var debug = function(){}
Il suffit ensuite d'appeler comme suit :
debug('This is happening.')
Vous pouvez même prendre le contrôle de la console.log avec un interrupteur comme celui-ci :
if (!isDebug) console.log = function(){}
Si vous voulez faire quelque chose d'utile avec ça Vous pouvez ajouter toutes les méthodes de la console et l'emballer dans une fonction réutilisable qui donne non seulement un contrôle global, mais aussi au niveau de la classe :
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!')
Vous pouvez maintenant l'ajouter à vos cours :
var MyClass = function() {
this.isDebug = true //local state
this.debug = Debugger(isDebug, this)
this.debug.warn('It works in classses')
}