关于call方法

关于call方法

一直都有些不太明白这个方法,例如 a.slice.call(b),就是说slice方法是a才有的,但是现在b也想用,所有使用call方法,就可以把slice这个方法借给b用,这样理解对吗?

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

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

1回答
好帮手慕码 2019-10-11 19:00:13

同学你好!

大致理解是正确的。它的正确写法应该是:Array.prototype.slice.call(nodeList)

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

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

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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