zoukankan      html  css  js  c++  java
  • 知识碎片 —— 数组 与 伪数组

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


    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对象

    }

  • 相关阅读:
    CSS揭秘三(形状)
    CSS揭秘(二背景与边框)
    js数组去重
    Iterator
    ES6数据结构set
    JS浏览器对象(BOM)
    JS 数据类型转换
    js的cookie,localStorage,sessionStorage
    (html+css)云道首页
    蓝桥杯-基础练习 01字串-C语言-5层循环法
  • 原文地址:https://www.cnblogs.com/wtzmz/p/12938044.html
Copyright © 2011-2022 走看看