记录 一些有趣的js
重写console.log
bind真是个有趣的东西,与apply,call 相似 主要是改变上下文this的指向的,但bind返回的是个函数,apply与call则是立即执行,在闲逛中发现,bind可以预先传入一些值,也可以不改变this的指向,那么可以把console.log写的好看简单些
console.log(123,456) //输出 123 456 //首先console.log是可以传入多个参数的
var log=log||console.log.bind(null,'[log]');
log(123) //输出 [log] 123
log.login=log.bind(console,'-login-');
log.login('登陆异常'); //输出 [log] -login- 登陆异常
log.vali=log.bind(console,'-vali_err-');
log.vali('校验异常'); //输出 [log] -vali_err- 校验异常
log('通常异常'); //输出 [log] 通常异常
当然闲逛时看到的是对js理解更深入的另一个版本:
function log(){
var args = Array.prototype.slice.call(arguments);
args.unshift('[app]');
console.log.apply(console, args);
};
log('通知或异常'); //输出 [app] 通知或异常
https://www.cnblogs.com/moqiutao/p/7371988.html这里有着更详细的理解
写法上第一种更简洁些,而我对这两者的效率并不是很了解,bind毕竟是返回一个全新的函数,料想占用的内存或者效率什么的会差一些把。