自己封装JS的日志类,利用apply/call函数

转自:http://hi.baidu.com/donick/item/6451ef263e31a8474799623f

IE console.info等方法不能call、apply调用 的解决方法

自己想封装一个logger类调用console方法的时候能打出时间、模块名称等额外的info,而IE console下的方法不支持call、apply调用,也不能直接给console.info等方法设置call方法,很麻烦。。。
可以利用Function.apply、Function.prototype.apply、Object.apply等方法代替:
Function.apply.apply(consloe.info, [console, aArgs]);
or
Function.apply.call(consloe.info, console, aArgs);
注:其中aArgs为数组

function doLog(sMethod , aArgs){
      if(navigator.userAgent.toLowerCase().indexOf('msie') > -1){
            Function.apply.apply(console[sMethod], [console, aArgs]);
      }else{
            console[sMethod].apply(console,aArgs);
      }
}
var Logger=function(sModule){
         this._name=sModule;
};
var methods=['log','debug','info','error','warn'];
for(var i=0,len=methods.length; i<len; i++){
    (function(method){
        Logger.prototype[method]=function(){
            var sDate='['+ new Date().toLocaleString()+']';
            var aArgs=Array.prototype.slice.call(arguments,0);
            aArgs.unshift(sDate);
            aArgs.push('('+ this._name+')');
            doLog(method,aArgs);
    }})(methods[i]);
}

//-----------------------------
var log=new Logger('chatList');

log.info('hello');

ok,成功输出 :[2012年3月7日 18:29:23]hello(chatList)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值