现在写代码都有个倾向,尽量用简单逻辑,短小的词汇来构成,甚至用到了大量 shortcut (叫 短名 ?),比如多种浏览器都提供了 console API,用来做 log 是不错的,但是到处都 console.log(…) 并不怎么理想,如果可以缩短成 $.log(…) (使用 jquery )就挺好的,而且还有利于屏蔽各种浏览器的差异,随意控制是否启用日志监控。
这里就是需要将 console.log 转换成 $.log,当然还有其它如 error, info。最简单的想法就是
if (window.console) { $.log = console.log } else { $.log = function() {} }
不过,这个做法仅仅得到 firebug 的支持,在 webkit 中会报告 Uncaught exception,那尝试提供一个 console 的 proxy?
在 Java 中真是小菜一碟,js 里也不难:
$.log = function() { console.log.apply(console, arguments); }
不过,问题就是怎么看,怎么不优雅,太啰嗦,还是原来那个对象,apply 后依然是 console, 还是那个方法,log,实际上就是传递一下参数。是不是有点蠢了。
然后,就没有然后了。我没办法让它更优雅了。
想要得到一个缩略的用法 $.log(…),是有代价的,不过还是值得的。
另外,基于以前的实验,大量的 apply 会明显影响性能,所以,apply 有风险,使用需谨慎。