类数组
- 属性从0开始排,依次为0,1,2…,具备callee和length等属性,但没有数组其他丰富的方法。
常见的类数组
- dom 选择器选择的 DOM 列表、DOM 属性列表等
- 函数的 arguments 参数
- TypeArray 类型数组
- FileList
- window
- DataTransferItemList
- localStorage 等
类数组和数组判断差别
数组 类数组
toString [object Array] [object Object]
instanceof Array Object
constructor [Function: Array] [Function: Object]
Array.isArray true false
类数组调用数组方法
- 通过apply、call等改变this指向等方法即可调用。(离谱)
function f(a, b) {
Array.prototype.map.call(arguments, (item) => {
console.log(item);
});
}
类数组转换成数组
- Array.prototype.slice.call()
let arr = Array.prototype.slice.call(arguments);
let arr = Array.from(arguments);
let arr = [...arguments];
let arr = Array.prototype.concat.apply([], arguments);