zoukankan      html  css  js  c++  java
  • 浅析JavaScript引用类型之--Object、Array

    1、Object类型

      对象是某个特定引用类型的实例,新对象有两种创建方式:

      i、使用new操作符调用构造函数来创建。

    1 var person = new Object();
    2 person.name = "zhangsan";
    3 person.age = 20;

      ii、使用对象字面量表示法来创建对象,可以简化创建包含大量属性的对象的创建过程。

    1 var person = {
    2     name : "zhangsan",
    3     age : 20    
    4 };

      var person = {} <==> var person = new Object();创建一个只包含默认属性和方法的对象。通过对象字面量创建对象时不会调用Object构造函数的.

      对象字面量也是向函数传递大量可选参数的首选方式,通常必须值使用命名参数,而大量的可选参数则用对象字面量封装。这里display方法没有命名参数,可以通过arguments参数对象获取到传入的参数列表。arguments[1]获取到的就是这个匿名对象。访问对象的属性可以 对象.属性 或者 对象["属性"],person.name 或者person["name"]。

    function display(){
        alert(arguments[0]);
        console.log(typeof arguments[1].age);
    }
        
    display(123, {name : "zhangsan", age : 20});//输出20

    2、Array类型

      ECAMScript中的数组每一项可以保存任何类型的数据,也就是说如果第一项保存字符串,第二项可以保存数字...数组的大小可以动态调整,随着数据的添加自动增长以容纳新增数据,java的数组的长度可是不变的,这个数组功能有点强大...javascript数组的这个特性感觉有点像java中List集合。写着写着思考到什么时候在java中用数组或者集合,不跑题。

      创建数组的方式有以下两种:

    1 //1.
    2 var colors = new Array();
    3 var colors = new Array("red", "blue");//可以省略new操作符,如果看到不要奇怪
    4 
    5 //2.利用数组字面量创建数组
    6 var colors = ["red", "blue"];

      数组的length属性:不是只读的,可以通过修改数组的lenght属性改变数组的长度(添加元素,删除元素);

    var colors = ["red", "blue"];
    colors.length = 3;
    console.log(colors[2]); //undefined

      这时数组的长度变成了3,最后这个语句会输出undefined;

      此外利用length属性也可以方便的在数组的末尾添加新项。这个比较有趣...大家都知道数组的下标从0开始,最大下标是lenght-1.

    1 var colors = ["red", "blue"];
    2 colors[length] = "black"; 

      下面开始介绍数组的具有的功能强大的方法。(并不是所有)

      1、栈方法:栈的数据结构是后进先出
      push(): 把元素添加到数组的末尾,返回数组长度;pop():移除数组末尾最后一个元素,并返回移除的元素。

      2、队列方法:先进先出
      shift():移除数组中的第一项并返回该项,unshift():把元素添加到数组的第一项。

      3、重排序方法:sort()、reverse(),我想这两个方法有什么用处大家看名字就应该知道。下面来看重点了解下sort方法。

    1 var values = [1, 2, 5, 10, 15];
    2 alert(values.sort());//1,10,15,2,5

      返回的结果有点出乎我们的预料,原因在于即使数组排序的时候全都是数字,比较的也是字符串的大小,就是比较的那个什么码来着...那么要对数字进行正常的排序要怎么解决呢?sort方法可以接收一个比较器方法,当这个返回负数的时候,会把value1放到前面,返回0表示两个值相等,返回正数的话就会把value1放到后面。

    1 var values = [1, 2, 5, 10, 15];
    2 alert(values.sort(compare));  //1,2,5,10,15
    3 function compare(value1, value2){
    4     return value1 - value2;
    5 }

      4、操作方法

      concat():可以把传入的数组拼接到原数组的末尾
      slice():类似于字符串的截取方法subString
      splice():很强大的一个方法,主要用于向数组中插入项。还可以删除项、替换项。
        删除splice(要删除的第一项位置,要删除的项数),
        插入splice(插入位置,0,插入内容);
        替换splice(位置,替换项数,替换内容);

      5、位置方法

      indexOf():从头开始查找 lastIndexOf():末尾开始查找
      比较用的是全等操作符(===),因此要查找的项必须严格相等。ps:你真的了解JavaScript中的==吗?

      6、迭代方法

      every(), filter():返回符合条件的数组,你要筛选符合某些条件的项时,很有用吧。 foreach(), map():返回进行特定处理的数组, some()。

    1 var num = new Array(1, 2, 3, 4, 5, 10);
    2 var newArray = num.filter(function(item, index, array){return item > 2;});
    3 alert(newArray);//3, 4, 5, 10

      Over.如果觉得不错,请帮忙点下推荐,给我点动力。另外有错误的地方欢迎大家指出,共同学习进步。感谢您的浏览!

  • 相关阅读:
    Java工具类
    集合 -- 嵌套表
    集合--索引表
    第一章
    记录Record
    序列Sequence
    操纵数据库 DML
    表的集合操作
    视图
    索引
  • 原文地址:https://www.cnblogs.com/dengmj/p/4851341.html
Copyright © 2011-2022 走看看