javascript中的伪数组
欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~
什么是伪数组
假如有这样一段代码
1 |
|
去看控制台看看
上图就是一个伪数组,长相很像数组,但是将他的原型_proto_打开看看,它没有数组的splice,concat,pop等方法
特点:
- 具有
length属性 - 按索引方式存储数组
- 不具有数组的方法
将伪数组转化为真数组
可以通过
call或者apply的方法,将伪数组转化为真数组
1 |
Array.prototype.slice.call(liArr.children) |
原理
借用数组原型方法:
1 |
var arr = Array.prototype.slice.call(liArr.children); |
可以简化为:
1 |
Array.prototype.slice.call(liArr.children) |
总结
- 伪数组没有数组
Array.prototype的属性值,类型是Object,而数组类型是Array - 数组是基于索引的实现, length 会自动更新,而对象是键值对
- 使用对象可以创建伪数组,伪数组可以利用
call或者apply很方便的转化为真数组