Array.prototype.slice.call(nodeList); 这个不理解。

Array.prototype.slice.call(nodeList); 这个不理解。

清晰、完整得描述问题,更容易得到专业的回复

正在回答

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

2回答

1、在JS里Array是一个类,slice是此类里的一个方法 ,那么Array.prototype.slice应该这么去用,slice是截取的意思,slice()的使用方法是:arrayObj.slice(start, [end]) 截取数组的一部分

2、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()理解成一种固定的写法~

希望可以帮到你~

  • 二师兄e 提问者 #1
    非常感谢!
    2018-01-30 16:18:00
卡布琦诺 2018-01-30 10:16:48

这里是使用Array.prototype.slice.call将nodeList转换为Array。希望可以帮到你~


  • 提问者 二师兄e #1
    我的意思是数组方法 .slice() 括号里也没写参数,那截取的内容是什么。 然后 后面再跟一个 .call()方法。括号里参数是nodeList。之前不是说,call第一个参数修改this的指向。第二个参数作为穿进去的参数。 老师这样写的语句,也没介绍。就直接过去了。 然后您这么说,让我感觉 这是一种固定模式的写法???????
    2018-01-30 15:15:19
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

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

在线咨询

领取优惠

免费试听

领取大纲

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