老师问两个问题。。

老师问两个问题。。

1.

老师为什么说这里的数组第一个是name啊?  我不太明白这个数组指向哪里去的。http://img1.sycdn.imooc.com//climg/5e54ad15091adfcc18160418.jpg

是不是这样的意思?http://img1.sycdn.imooc.com//climg/5e54af630982477d12620884.jpg

2.

 [].slice.call(arguments, 1, arguments.length));

这段代码要怎么理解啊? slice的用法不是arrayObject.slice(start,end)吗?

这里 套一个call进来 就变成 [].slice.call(this, start, end));的意思吗? 这个写法的先后顺序是怎么样,参数是固定这样的格式吗传入吗? 这样的规定是从哪里来的, 以后要写嵌套这样的代码 如何判断输入参数的先后顺序? 

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

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

2回答
好帮手慕慕子 2020-02-25 15:54:24

同学你好,简单理解就是因为使用call方法会改变this指向,让其指向arguments,实现对slice方法的使用。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 陈立天 #1
    改变了this指向 后,指向arguments本身 他为什么就拥有了数组方法的slice呢? 不明白呀。arguments不是类数组吗。。。老师有点懵 类数组和真正数组有什么区别了。为什么说改变指向就拥有了数组当中的方法slice?
    2020-02-25 17:05:25
  • 一路电光带火花 回复 提问者 陈立天 #2
    类数组和真正数组的区别就是:类数组具有数组的length属性,可以像数组一样通过索引获取对应内容,但是不可以直接使用数组特有的方法,例如slice。 至于 [].slice.call(arguments, 1, arguments.length));这句代码你完全可以认为是一个固定的写法记住就行,不过你也可以看看这个帖子的回答,试着去理解 https://segmentfault.com/q/1010000005643934
    2020-02-25 17:19:46
好帮手慕慕子 2020-02-25 15:15:07

同学你好, 对于你的问题解答如下:

  1. 可以这么理解,第二张图的关系对应是正确的。

  2. 因为arguments是类数组,并不是真正的数组,无法使用数组独有的slice方法,所以我们通过call方法,让arguments可以借用数组的方法。

  3. 参数传顺序是固定的,call方法第一个参数是一个对象,后面接着的第二个、第三个参数也是传入调用方法(就是这里的slice方法)中的参数顺序。

  4. 所以说这里的第一个参数arguments是类数组(表示一个对象),第二个参数1是开始索引(start), 第三个参数arguments.length是结束索引(end)

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 陈立天 #1
    我不太理解老师第二点说的为什么说通过call方法就能够让arguments可以借用数组的方法呢?
    2020-02-25 15:40:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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