类数组对象转换为数组对象的简单理解
一 : 关于类数组对象:只包含使用从零 0 开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象
JavaScript中有一些著名的类数组对象,它们看起来很像数组:
- 拥有length属性 这里强调一下,必须有length属性,且length属性的值必须和元素键值对个数保持一致 如果没有length属性,那么就不是类数组
- 元素按序保存在对象中,可以通过索引访问
但实际和数组又不是一回事:
- 没有数组的很多方法
- 也会有数组没有的方法(e.g. NodeList的item()方法)
- 有些类数组对象是动态变化的(e.g. NodeList的值是基于DOM结构动态执行查询的结果)
|
|
|
|
|
|
|
|
通过以上四种情况,大家可以在自己电脑上输出看下结果,类数组对象的定义大家应该会有一种新的认识;
二 : 将 类数组对象 转换为 数组对象
- slice 和splice方法都可以,slice不会改变原数组,splice会将改变原数组
|
|
|
|
- push + apply + 空数组(apply会将传入的数组或者类数组拆分开以单个元素的形式传递给push,然后push就可以正常的往数组里面加元素咯)
|
|
以上的栗子,大家可以将类数组的length属性去掉试一下看看,就会发现这个属性对于类数组 定义的重要性了