老师,请问这块什么意思,课程内容没有看懂

老师,请问这块什么意思,课程内容没有看懂

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图
http://img1.sycdn.imooc.com//climg/5fbfb07d094614c311240230.jpg

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

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

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

2回答
好帮手慕言 2020-11-28 10:20:47

同学你好,参数是一个一个的传入的,如下:http://img1.sycdn.imooc.com//climg/5fc1b31909a5466706160042.jpg

1是slice方法的第一个参数,表示从何处开始选取,arguments.length是slice方法的第二个参数,表示从何处结束选取。

祝学习愉快~

好帮手慕言 2020-11-27 10:47:56

同学你好,解答如下:

1、 [].prototype.slice.call(arguments, 1, arguments.length)表示将传入的参数转成数组。我们来了解一些概念:

   []是javascript的一个引用类型,其原型prototype上有一个方法叫slice

   slice: 可从已有的数组中返回选定的元素

   call:  用来改变对象中函数内部的this指向问题

能用slice方法的,要有length属性,需要注意:虽然arguments有length属性,但是他不是数组类型, 没有slice方法,所以呢,[].prototype.slice()执行的时候,Array.prototype已经被call改变this指向, 指向arguments了,使用slice方法截取arguments传入的两个参数。

我们可以打印一下, 查看结果

http://img1.sycdn.imooc.com//climg/5fc06716097afa6809230194.jpg

打印结果:

http://img1.sycdn.imooc.com//climg/5fc0674609a61f7403610144.jpg

http://img1.sycdn.imooc.com//climg/5fc0674d0919985901890051.jpg

2、视频中老师提到,实际传入参数的个数是不确定的,所以不能够直接写死,使用arguments获取到所有参数,经过第一条的分析后可知转换后的结果是一个数组,但是operation[name]方法传递的参数是单个分开传入的,不符合格式,所以这里要用到apply方法,将参数以数组的形式传入。

祝学习愉快~

  • 提问者 慕虎1507818 #1

    call()里面除了改变this指向,传入的参数不是应该一个一个传入吗?但为什么传入的是数组截取范围

    2020-11-27 20:15:36
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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