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

  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/dengmj/p/4851341.html
Copyright © 2011-2022 走看看