apply方法困惑

正在牛客网做题目,遇到一个题,题目:
实现函数 callIt,调用之后满足如下条件
1、返回的结果为调用 fn 之后的结果
2、fn 的调用参数为 callIt 的第一个参数之后的全部参数
有人是这么解决的:(第一种方法能明白,为什么第二种方法是这样写的呢?shift不是返回的是被删除的第一个元素吗,为什么apply方法就只调用了,都没出现fn是怎么调用的??不是很理解 )
clipboard.png

阅读 1.4k
1 个回答

那是[].shift.call(a)

也就是a.shift(),主要是arguments不是数组类型的,所以需要使用call的方式将[].shift()this改为arguments,从而使argumengs能使用shift方法。


function callIt(){
 var fn = [].shift.call(arguments)
 var newArguments = arguments
 return fn.apply(null, newArguments)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题