类数组对象介绍
类数组对象:格式与数组结构类似,拥有length属性,可以通过索引来访问或设置里面的元素,但是不能使用数组的方法,就叫类数组对象
常见的类数组对象,函数的arguments对象,浏览器的NodeList
function fun(){
console.log(arguments);
}
fun(1,2,3,4,5);
类数组对象如何使用数组方法
由于类数组对象不具备数组的方法,而我们使用的时候通常是想使用数组的方法,这时候就会报错,那类数组对象如何使用数组方法呢?
1.call()方法改变作用域(改变this指向)
Array.prototype.slice.call(arguments)
2.直接使用空数组调用.call()方法原理和方法1一样
[].slice.call(arguments)
3.创建空数组,遍历类数组对象,添加到数组中
function transfer(){
let arr = [];
for(var i = 0; i < arguments.length; i++){
arr.push(arguments[i]);
}
console.log(arr);
}
transfer(1,2,3,4,5);
4. 双下划线prop指向数组对象的原型
arguments.__prop__ = Array.prototype;
5. es6解构语法直接解构
[...arguments]
6. es6新方法Array.from()
Array.from(arguments)
以上方法有的并未改变类数组对象的类型,但是均使类数组对象可以正常使用数组家的方法,一般就常用方法6就ok了