概述
很多时候,console在前端开发是到处乱飞的,不管是在开发阶段还是发布状态,也许没人注意到。不废话。
代码
去掉注释部分则不会再输出日志了,性能也会提升哦!哈哈哈。也可以在外部定义全局变量prod=true,而我也推荐在全局去设置。
;(function(w){
var c = w.console;
var HUAMILOG = 'HUAMILOG:';
//w.prod = true;
if(c){
var log = c.log;
c.log = function(){
if(w.prod)return;
if(arguments[0] && arguments[0] === HUAMILOG){
return;
}else{
Array.prototype.unshift.call(arguments,HUAMILOG);
}
if(log){
log.apply(c,arguments);
}else{
document.write.apply(c,arguments);
}
};
var info = c.info;
c.info = function(){
if(w.prod)return;
Array.prototype.unshift.call(arguments,HUAMILOG);
if(info){
info.apply(c,arguments);
}else{
c.log.apply(c,arguments)
}
}
var debug = c.debug;
c.debug = function(){
if(w.prod)return;
Array.prototype.unshift.call(arguments,HUAMILOG);
if(debug){
debug.apply(c,arguments);
}else{
c.log.apply(c,arguments)
}
}
var warn = c.warn;
c.warn = function(){
if(w.prod)return;
Array.prototype.unshift.call(arguments,HUAMILOG);
if(warn){
warn.apply(c,arguments);
}else{
c.log.apply(c,arguments)
}
}
var error = c.error;
c.error = function(){
if(w.prod)return;
Array.prototype.unshift.call(arguments,HUAMILOG);
if(error){
error.apply(c,arguments);
}else{
c.log.apply(c,arguments)
}
}
var trace= c.trace;
c.trace= function(){
if(w.prod)return;
Array.prototype.unshift.call(arguments,HUAMILOG);
if(trace){
trace.apply(c,arguments);
}else{
c.log.apply(c,arguments)
}
}
var assert = c.assert;
c.assert = function(){
if(w.prod) return;
if(assert){
assert.apply(c,arguments);
}else if(!arguments[0]){
c.error.apply(c,arguments);
}
}
var count = c.count;
c.count = function(){
if(w.prod) return;
if(count){
count.apply(c,arguments);
} else {
var num = this.num || 0;
num = num + 1;
this.num = num;
}
};
c.reset = function(){
this.count = 0;
w.prod = false;
}
}
})(this);