关于call()方法问题

关于call()方法问题

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

这里既然可以借用数组的slice()方法,为什么不能借用push()方法直接添加呢?
我试了,用Array.prototype.push.call(nodes, '<li>第4个节点</li>')实现不了,这是为什么?同样都是借用数组的方法,为什么一个可以,一个不行?

还有一个疑问,数组的slice()方法,格式是arr.slice(start,end),里面的start参数是必须的,为什么例子里不写参数也能用?

请老师帮忙详细解答下,谢谢了

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

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

1回答
卡布琦诺 2020-05-06 17:23:26

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

1、不能使用Array.prototype.push.call()方法是因为Array.prototype.push.call()方法可以在对象上添加,但是不能在类数组对象上添加,如下:

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

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

然后这个对象相当于转化成了类数组对象,因为有了length属性。

2、Array.prototype.slice.call()可以理解为:改变数组的slice方法的作用域,在特定作用域中去调用slice方法,call()方法的第二个参数表示传递给slice的参数,即截取数组的起始位置。

祝学习愉快!

  • 提问者 人生的起源 #1
    能说下push为什么不能用call()方法在类数组添加吗?相同情况下,slice都可以
    2020-05-06 19:08:10
  • 卡布琦诺 回复 提问者 人生的起源 #2
    不是很理解同学说的相同情况下指的是怎么,建议详细描述一下,祝学习愉快!
    2020-05-07 09:48:26
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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