call(arguments) 没有指定上下文,就一个arguments参数啥意思

call(arguments) 没有指定上下文,就一个arguments参数啥意思

https://img1.sycdn.imooc.com//climg/61e11a42098cb08e14141578.jpg

缓存加法问题里的主体函数

https://img1.sycdn.imooc.com//climg/61e11a7409c1b60607560058.jpg

这里的call没有指定上下文的this,就一个arguments参数是什么意思啊?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2022-01-14 15:23:17

同学你好,call方法第一个参数(this指向)是可选的,不是必须的。arguments是接收传入的实参,类数组对象,通过

[].slice.call(arguments)可以将类数组转化为真正的数组,从而可以使用数组的内置方法。

例如:

https://img1.sycdn.imooc.com//climg/61e124b80986612504530159.jpg

https://img1.sycdn.imooc.com//climg/61e124df09f690db06930062.jpg

祝学习愉快!

  • 我觉得解答有一定的误导性,查了些资料,觉得是这样理解:

    这里call的第一个参数没有省略,是arguments。arguments虽然不是保留字,但在这里它代表一个类数组对象,该对象可理解成函数的实参表。

    [ ].slice.call(arguments);——将数组对象的slice方法应用于arguments代表的类数组对象。

    实际省略的是slice的参数(slice的两个参数都是可选的),且slice( )<=>slice(0)。

    2022-11-05 14:43:26
  • 同学你好,理解的没问题,是老师答错了。call方法使得调用slice方法的对象改成arguments(类数组对象)。

    祝学习愉快!

    2022-11-05 15:45:13
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师