Function.apply.call 连用是怎么回事?

if (window.console && avalon.config.debug) {
        // http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log
        Function.apply.call(console.log, console, arguments)
    }
阅读 3.2k
3 个回答
if (window.console && avalon.config.debug) {
    // http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log
    Function.apply.call(console.log, console, arguments)
}

call和apply是函数对象的方法

call语义:在console.log函数对象上调用apply函数,传入的参数为console对象和所在函数的调用参数arguments-类数组对象
==>
console.log.apply(console,arguments);
apply语义:在console对象上调用log函数并传入arguments-类数组对象
==>
console.log(arguments);

怎么一搞,最终效果还是通过console.log输出日志~~

但是搞不明白为什么要这样写,饶了那么一大圈

Function.apply.call(console.log, console, arguments)
==
console.log.apply(console, arguments)

就是想知道为什么要这么绕?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题