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方法呢

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

希望能够帮到你...

querySelectorAll得到的是NodeList,特殊的数组,和Array不一样,不能操作NodeList。你要操作先拷贝到一个Array里面去才行