• 知识碎片 —— 数组 与 伪数组


    今天在博客园上看到博主写的一篇博客,对我还是有帮助的,在这里记录一下~


    js 中的数据类型: 

    分为简单数据类型: num , string ,null,boolean,undefined

            引用数据类型:object,function,array


    1.创建对象方法:

    1)通过字面量的方式创建

    2)通过“构造函数”的方式创建

    3)通过object方式创建

    4)使用工厂模式创建对象

    5)通过原型模式创建对象


    2.创建数组

    1)采用直接量创建

    var = arr= []

    2)采用构造函数Array()创建

    var arr  = new Array()

    3.数组与对象的关系

    JS 的 原型继承。所有的JS内置构造函数都是继承自 Object.prototype。在这个前提下,可以理解为,使用new Array()或 [ ] 创建出来的对象。都会拥有Object.prototype 的属性值

    var obj = {};// 拥有Object.prototype的属性值
    var arr = [];
    //使用数组直接量创建的数组,由于Array.prototype的属性继承自 Object.prototype,
    //那么,它将同时拥有Array.prototype和Object.prototype的属性值

    1):这里得到了第一个 对象 与 数组的区别,数组不仅有 Object.prototype属性还有 Array.prototype属性    而 对象仅有Object.prototype属性

    4.数组(跳过)

    5. 伪数组

    定义:

    1:拥有length属性,其他属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)

    2:不具有数组所具有的方法

    var fakeArray = {
        length: 3,
        "0": "first",
        "1": "second",
        "2": "third"
    };
     
    for (var i = 0; i < fakeArray.length; i++) {
        console.log(fakeArray[i]);
    }
     
    Array.prototype.join.call(fakeArray,'+');

    伪数组是个Object,而数组是array


    下面所记录的 还没有学到,作为了解先记录一下

    Js内置对象中常见的伪数组就是大名鼎鼎的 arguments:

    (function() {
      console.log(typeof arguments); // 输出 object,它并不是一个数组
    }());

    在DOM对象中,childNodes也是伪数组

    console.log(typeof document.body.childNodes); // 输出 object

    此外,还有很多

    伪数组存在意义,是可以让普通对象也能正常使用数组的很多算法,如:

    var arr = Array.prototype.slice.call(arguments)

    还有另一种写法: var arr = [].slice.call(arguments)

    另外,你可以使用 bind 来简化该过程

    或者

    var arr = Array.prototype.slice.call(arguments,0);   // 将arguments对象转为真正的数组

    Array.prototype.forEach.call(arguements,function(v)){

    //循环arguments对象

    }

  • 相关阅读:
    C#中Dictionary的用法
    System.Timers.Timer用法
    C#中的异步调用及异步设计模式(三)——基于事件的异步模式
    C#中的异步调用及异步设计模式(二)——基于 IAsyncResult 的异步设计模式
    C#中的异步调用及异步设计模式(一)
    [你必须知道的异步编程]——异步编程模型(APM)
    strncasecmp与strcasecmp用法
    C语言之strrchr函数
    HDU 5289 Assignment (ST算法区间最值+二分)
    poj 1733 Parity game(种类并查集)
  • 原文地址:https://www.cnblogs.com/wtzmz/p/12938044.html
Copyright © 2020-2023  润新知