IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

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

    notsobad发表于 2012-03-16 02:06:00
    love 0

    以前我在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) }
    

    有点疑问,为什么以前第一种写法没有报错呢?



沪ICP备19023445号-2号
友情链接