孔楼笑笑生 2016-09-13 12:10 采纳率: 33.3%
浏览 1345
已采纳

js数组 slice 方法如调用

 var divs = document.querySelectorAll('div');

用这个divs 不能用 slice()方法

但是

 var array =[];
var divs = document.querySelectorAll('div');
divs.forEach(function(div){
        array.push(div)
})

array 就有slice()方法

或者

 var divs = document.querySelectorAll('div');
[].slice.call(divs);

就可以使用slice方法,为什么 第一种不能用slice方法呢

  • 写回答

2条回答

  • little_how 2016-09-13 14:06
    关注

    可以用constructor来判断,因为slice是数组的方法,
    你的divs是一个集合,不是数组,所以不能调用数组的方法。
    call和apply是可以改变调用者对象的,就是方法不变而this改变,所以slice可以call,divs
    因为集合也支持下标读取,所以可以调用。

    希望能够帮到你...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题