2 u013865953 u013865953 于 2016.09.13 20:10 提问

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个回答

w172087242
w172087242   Ds   Rxr 2016.09.13 22:06
已采纳

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

希望能够帮到你...

showbo
showbo   Ds   Rxr 2016.09.14 09:05

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

Csdn user default icon
上传中...
上传图片
插入图片