求教一个call和apply的用法

tyskin 2013-08-06 12:36:46
Function.prototype.apply.call(console.log, console, Array.prototype.slice.call(arguments));


请问这样调用console.log和console的原因是什么?
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fzfei2 2013-08-06
  • 打赏
  • 举报
回复
感觉没必要要这样写,console.log直接可以要用数组输出了
RainOnly 2013-08-06
  • 打赏
  • 举报
回复
Function.prototype.apply.call(console.log, console, Array.prototype.slice.call(arguments)); 拆开解释:Array.prototype.slice.call(arguments) 这段代码是调用数组的slice方法,把参数转换成一个数组 arguments是函数内部的参数集合 由此可见这段代码也是放在一个函数内部的。 call是调用方法 参数1 : console.log 更改Function的上下文环境,也就是this 参数2 , 参数3 : 函数中的参数,call与apply的区别就在与传入参数集合的方式不同,call是按照顺序码放,apply是作为一个集合放进去 Function.prototype.apply是把apply方法放在 函数的原型列表里,这样使用的时候就需要先创建函数对象 var a = function(){} 这个样子。 Function.prototype.apply.call 这个就是apply是定义在Function原型中的方法,调用这个方法的时候,apply函数的上下文会指向concole.log 而且默认apply 函数的主体能够获取console 与 参数集合 的参数 大致就是上面这一堆东西 这个算是js的进阶用法,一般不是设计上必要,不要这么写。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧