一、什么是类数组对象
它是一个对象 typeof (变量) === 'object'
拥有length属性
可以通过索引访问元素
举个栗子
var
类数组对象的访问
类数组对象的赋值
获取类数组对象的长度
如何判断一个对象是类数组对象?《javascript权威指南》中给出了鉴别函数
function
二、类数组对象与数组的区别
类数组对象不能直接使用数组的方法
- ES5
join、push、pop、shift、unshift、slice、splice、concat、reverse、sort、indexOf、indexLastOf、
- ES6
every、some、filter、map、forEach、reduce、find、findIndex、fill、copyWithin、entries、keys、values、includes、flat、flatMap
三、类数组对象转换为数组的方法
- Array.prototype.slice.call()、[].slice.call()
ES5中slice方法的实现
Array
举个栗子
var
var
var
var
- 原生JS转换
var
- ES6 Array.from()
let arr6 = Array.from(arrLike)
四、常见的类数组对象
Arguments
NodeList 节点集合
document.querySelectorAll('div')
HTMLCollection 元素通用集合
document.getElementsByTagName('div')
string: 是一个只读的类数组对象
String.prototype
window
window.length表示网页中iframe的个数
localStorage
sessionStorage
FileList
//html<input>元素的files属性
五、为什么会出现类数组对象?
六、我的问题
所有的数组一定是类数组对象吗?是否可以这样提问?为什么网上没有相关解释?