为什么要通过原型链上的方法才能转换

为什么要通过原型链上的方法才能转换

指针指向Array通过call改成指向类数组,强制转换成Array对象来调用slice方法吗

正在回答

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

4回答

同学你好,slice是一个方法,数组单独调用的时候需要加(),也就是[].slice()。但是链式调用的时候slice后面不需要加(),call方法加括号就好,[].slice.call() 。

祝学习愉快!

好帮手慕星星 2020-10-29 09:30:08

同学你好,new Array() 会实例化出来数组,直接调用slice就好,不需要通过prototype原型调用。另外,slice后面不需要加括号,可以这样写

(new Array()).slice.call()

祝学习愉快!

  • 提问者 慕尼黑7895541 #1
    你之前回答,空对象调用[].slice()为什么又要加括号呢
    2020-10-29 16:48:55
好帮手慕星星 2020-10-28 17:56:38

同学你好,是不可以Array.slice().call()这样使用的,因为Array是构造函数

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

它的原型对象上才有slice方法

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

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

new Array()可以创建一个数组,而我们常用slice方法是[].slice()。所以构造函数Array使用的时候需要通过原型对象Array.prototype.slice.call() 。

祝学习愉快!

  • 提问者 慕尼黑7895541 #1
    噢噢 那就是 new Array() 也是指向原型对象吗 如果这样写 (new Array()).slice().call()也可以吗
    2020-10-28 20:04:14
好帮手慕星星 2020-10-28 09:54:07

同学你好,是的,知道Array.prototype.slice.call()此方法能将类数组对象转化为数组就可以。

课程中老师也说了,可以通过Array.prototype原型调用,也可以通过数组对象[]调用,都没问题。slice是数组的方法,所以需要通过数组调用。

祝学习愉快!

  • 提问者 慕尼黑7895541 #1
    不调用原型对象直接Array.slice().call()行吗
    2020-10-28 17:18:00
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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