javascript 伪数组和转化为标准数组
Posted Three stones
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 伪数组和转化为标准数组相关的知识,希望对你有一定的参考价值。
1: 什么是伪数组
伪数组是一个含有length属性的json对象,
它是按照索引的方式存储数据,
它并不具有数组的一些方法,只能能通过Array.prototype.slice转换为真正的数组,并且带有length属性的对象。
var obj = {0:‘a‘,1:‘b‘,length:2}; // 伪数组 var arr = Array.prototype.slice.call(obj); // 转化为数组 console.log(arr); // 返回["a","b"]
2:它和数组的关系
都是模拟集合
3:为什么会有伪数组
在日常开发中,有许多的对象是由伪数组组成,比如函数内arguments对象,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组.
4:为什么使用Array.prototype.slice.call()方法可以将伪数组转化数组
其实我们也可以通过[].slice.call这种形式实现同样的效果,但是通过prototype的形式执行程序效率更高,同样代码也更加优美。
这个是V8引擎中Array.js对slice方发的实现过程,有兴趣的同学可以研究下。
我理解的大概思路就是 ↓ ,可能不对,仅供参考。
1
2
3
4
5
6
7
8
|
function slice(obj) { var arr =[]; var len = obj.length; // length 正好对应伪数组中的length属性 for ( var i = 0;i < len;i++){ arr.push[i] = obj[i]; // i 正好对应伪数组中的索引值 } return arr; } |
5:Jquery与伪数组
其实Jquery内部大量运用了伪数组。可以说整个Jquery对象,都是构建在伪数组的基础之上的。
以上是关于javascript 伪数组和转化为标准数组的主要内容,如果未能解决你的问题,请参考以下文章
在Javascript中什么是伪数组?如何将伪数组转化为标准数组?
在Javascript中什么是伪数组?如何将伪数组转化为标准数组?
前端每日一题 02在Javascript中什么是伪数组?如何将伪数组转化为标准数组?