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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
js数组操作方法concat()、slice()、splice()
concat()方法 concat()方法:基于当前数组中所有项创建新数组。 具体过程为:先创建数组的一个副本,若是concat()存在参数,将接收到的参数添加到副本的末尾,然后返回新构建的数组;若是没有传递参数,仅仅复制当前数组并返回副本数组。 concat()中的参数可以是一个新的数组也可以是一个字符串。 var colors = ["red","green","bl
JavaScript学习之:Slice无参调用可以将对象转化成数组
这个是研究MT的Array.From函数发现的问题: //无参数对类数组对象调用Slice会将其转换成数组: kkk = [ 'prop0','prop1','prop2','prop3' ]; var testObj = {     0: 'prop0',     1: "prop1",     2: "prop2",     3: "prop3",
JS中从Array.slice()与Array.splice()的底层实现原理分析区别
1.Array.prototype.slice() slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对像,原始数组不会改变。arrayObject.slice(start,end) start (可选,如果start不写则从0开始)从该索引处开始提取原数组中的元素。 如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2)表示提取原
JS数组的slice()方法传负数和字符串操作函数中的slice()、substr()、substring()
自己总结一下这几个字符串操作中的函数,若有不对的地方还请各位大神斧正~
数组对象的slice和splice方法
数组对象的slice和splice方法 之前被大神虐过一次,长长记性,专门把这两个方法拿出来做一个比较,本文仅做学习笔记使用,如有任何意见或建议欢迎在评论区指出。   slice 定义和用法 slice() 方法可从已有的数组中返回选定的元素。 语法 arrayObject.slice(start,end) 参数 描述 start 必需。
js中关于array的slice和sort方法
1. array.slice(start, end)slice()是用来截取数组中的一部分,用它来复制数组,如果省略了end参数,则切分的数组包含从start开始到数组结束的所有元素。现在要用它来复制数组,就一行,呵呵:var newArray=oldArray.slice(0);    其他说明:1. 如果 start 为负,将它作为 length + start处理,此处 leng
JavaScript:数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并
POP 删除最后一项 删除最后一项,并返回删除元素的值;如果数组为空则返回undefine var a = [1,2,3,4,5]; a.pop();//a:[1, 2, 3, 4] a.pop();//a:[1, 2, 3] a.pop();//a:[1, 2] shift 删除第一项 删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefine var a =
JavaScript中易混淆的方法之split、splice、slice辨析比较
写在前面的话 Split Splice Slice写在前面的话 很多时候,一门语言总有那么些相似的方法,容易让人傻傻分不清楚,尤其在不经常用的时候。而本文主要简单总结了JavaScript中的关于字符串和数组中三个容易混淆的方法。旨在方便查阅,在容易混淆的时候有据可查。如读者有疑问,欢迎留言交流。谢谢! Split Split是切割字符串的一种方法,该方法主要用于把一个字符串分割成字符串数组。 用于
js数组操作(push,pop,shift,unshift,slice,splice,concat,sort)
js中针对数组操作的方法还是比较多的,今天突然想到来总结一下,也算是温故而知新吧。不过不会针对每个方法进行讲解,我只是选择其中的一些来讲。 首先来讲一下push和pop方法,这两个方法只会对数组从尾部进行压入或弹出,而且是在原数组进行操作,任何的改动都是会影响到操作的数组。push(args)可以每次压入多个元素,并返回更新后的数组长度。pop()函数每次只会弹出最后一个结尾的元素,并返回弹
关于 js中 数组删除 和替换的例子(splice 和 slice)(w3cschool)
粘贴的方法