给console.log创建别名的正确方法

以前我在js里写log,一般是对console.log做个简单封装 var log = (window.console && console.log) || function(){}; 但是今天发现log('a')这样的语句会报错 >log=console.log function log() { [native code] } >log('a') TypeError: Illegal invocation 查了下,这篇文章讲的很详细,大意就是this作用域的问题,相对这些方法做别名的话,要用到apply、call等方法。 所以log函数应该这么写: var log=function(){ window.console && console.log && console.log.apply(console, arguments) } 有点疑问,为什么以前第一种写法没有报错呢? ...

March 16, 2012 · notsobad