什么是类数组对象?
一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象。 类数组对象和数组类似,但是不能调用数组的方法。
常见的类数组对象:
(1)arguments 和 DOM 方法的返回结果, (2)函数也可以被看作是类数组对象,因为它含有 length 属性值,代表可接收的参数个数。
常见的类数组转换为数组的方法有这样几种
1)通过 call 调用数组的 slice 方法来实现转换
2)通过 call 调用数组的 splice 方法来实现转换
3)通过 apply 调用数组的 concat 方法来实现转换
4)通过 Array.from 方法来实现转换
5) 通过 apply 调用数组的 splice 方法来实现转换
Array.prototype.slice.apply(arguments)
- arguments 为类数组对象,并不是真正的数组
- slice可以实现数组的浅拷贝。
- 由于 arguments不是真正的数组,所以没有slice方法,通过apply可以调用数组对象的slice方法,从而将arguments 类数组转换为数组。
6) 通过拓展运算符来实现
- 获取所有的DOM节点。
document.querySelectorAll('*')
此时得到的是一个NodeList集合,我们需要将其转化为数组,然后对其筛选。
- 转化为数组
[...document.querySelectorAll('*')]
常见的类数组转换为数组的方法有这样几种: