zoukankan      html  css  js  c++  java
  • 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方发的实现过程,有兴趣的同学可以研究下。

    我理解的大概思路就是 ↓ ,可能不对,仅供参考。

        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对象,都是构建在伪数组的基础之上的。

  • 相关阅读:
    追加元素的几种方法(append()、prepend()、after()、before()、insertAfter()、insertBefore())jquery
    微生物如何找吃的?
    细菌找吃的
    浓度梯度与偏倚随机行走
    我与吴建民先生的一点交集
    续谈随机行走
    随机行走
    小物体有轮子吗?
    食品卡路里是如何计算出来的?
    这门课有什么用?
  • 原文地址:https://www.cnblogs.com/lyul/p/6044240.html
Copyright © 2011-2022 走看看