Array.prototype.slice.call() 这个方法为什么能将类数组转化为数组呢?

Array.prototype.slice.call() 这个方法为什么能将类数组转化为数组呢?

Array.prototype.slice.call() 这个方法为什么能将类数组转化为数组呢?不明白原理

正在回答

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

4回答

同学你好,后面的参数是可选的

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

当没有参数的时候,逗号就不需要添加,有参数的时候再添加上逗,所以逗号在[内。知道怎么使用call方法就好。

祝学习愉快!

好帮手慕糖 2020-04-18 19:11:18

同学你好,这样使用中括号只是出于一种的表达形式的需要而已,不是必须的。可以理解为是可选参数,不是必须要传递的。

祝学习愉快~

  • 提问者 lcyjerry #1
    为啥逗号会紧跟在中括号后面是啥意思
    2020-04-18 19:13:54
好帮手慕糖 2020-04-18 19:01:53

同学你好,calll()方法的作用就是帮助一个对象去调用另一个对象的方法。这里:

call([thisObj[,arg1[arg2[[argN]]]]]) ;其中thisObj是一个对象的方法 ,arrg1~argN是参数

Array.prototype.slice.call(nodeList);这句话的意思就是说把调用方法的参数截取出来,又因为NodeList对象是一个节点的集合,NodeList对象不是一个数组,因此并没有数组拥有的一些方法,所以它并没有slice这个方法,而Array.prototype.slice.call(nodeList)可以理解成是让nodeList转换成一个数组对象,让nodeList具有slice()方法。

换句话说,Array.prototype.slice.call()能将具有length属性的对象转成数组,可以将Array.prototype.slice.call()理解成一种固定的写法,直接使用即可哦,

祝学习愉快~

  • 提问者 lcyjerry #1
    这里面参数的摆放我有点看不懂啊老师,为什么是这样摆放的数组的呢,[thisObj[,arg1[arg2[[argN]]]]] 这个逗号的位置我看不明白
    2020-04-18 19:07:28
好帮手慕糖 2020-04-18 17:22:56

同学你好,可以参考如下理解:

1、calll()方法的作用就是帮助一个对象去调用另一个对象的方法。如果其他类型的变量使用数组中的slice方法,就要借助call()方法去调用。

2、Array是创建数组的一个全局对象,你可以理解为它是所有数组的一个祖先。所有的对象,都会存在一个prototype,意思是原型。所以Array.prototype.slice.call();就是借助call去调用数组原型上的slice。

3、这是一个固定的写法,我们一般知道这么使用就可以了。也可以参考下如下文档:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

祝学习愉快~


  • 提问者 lcyjerry #1
    call([thisObj[,arg1[arg2[[argN]]]]]) call方法这个参数是啥意思啊?逗号为什么会在那个位置
    2020-04-18 17:28:34
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

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

在线咨询

领取优惠

免费试听

领取大纲

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