从一个小场景学会使用 apply方法

1. 需求

  • 需要自定义一个log方法,这个方法可以像原生的console.log一样
  • 在开发环境我希望调用这个log会输出日志信息,生产环境我希望即使调用了这个方法,也不会输出日志信息。

2. 实现这个log

  • 可能要使用apply或者call方法
  • log的参数个数和类型都是不固定的
  • call的参数个数是固定的,要排除它
  • apply的参数是需要一个数组,这个合适,可以使用arguments来当做数组传递

3. 代码

1
2
3
4
5
6
7
8
var MyLog = {
silent: false,
log: function(){
if(!this.silent){
console.log.apply(this, arguments);
}
}
};

4. 试用

1
2
3
4
5
6
7
8
9
> MyLog.log(1,2,3, '4545');
1 2 3 "4545"
undefined

> MyLog.silent = true
true

> MyLog.log(1,2,3, '4545');
undefined

5. 后记

  • 不要随处使用console.log,因为这样当你不需要日志输出的时候,你就要到处填坑了
  • 不要使用alert,这个很烦人