Javascript引用类型学习

Object类型
    两种声明方式:
   1.     使用new,如下:
      var person = new Object() ;
      person.name = 'Ben' ;
      person.age = 18 ;

    2.     使用对象字面量定义对象

     var person = {
            "name" : 'Ben' ,
            "age" : 18
     };

             但是,要注意的是,使用对象字面量来声明的话是不会调用Object的构造函数的.


Array类型

    Array的声明方式也有几种方式,这里直接陈列出来:

    var colors = new Array(20) ;                                         //这里指的是声明一个长度为20的数组        
var colors = new Array('red', 'blue', 'white') ;                     //这里指的是声明一个包含三个颜色的数组

    这两种方式可能会引起一个疑惑,所以规定,若只有一个参数,如果传递的是数值,则会创建包含给定项数的数组;如果是其他类型,则会创建只包含那个值的只有一项的数组。同上面的Object一样,创建数组也可以不用new关键字:

    var colors = ['red', 'blue', 'black'];
    var colors = [] ;

    与Object一样,使用数组字面量方式创建时,不会调用Array构造函数

    Array有一个属性叫 length, 可以通过 ' * .  length'来获取值,不过特殊在于,该属性不是只读的,因此通过设置该属性,可以从数组的末尾移除项或添加新项。

    如下:

    var colors = ['red', 'black', 'blue'] ;                 //此时 colors.length = 3
    colors.length = 2 ; 
    alert(colors[2]) ;                                      //显示 undefined

    如果改变length的值更大了,那么多出的几个都会取得undefined值。

    var colors = ['red', 'black', 'blue'];    
colors[22222] = 'ee';
console.log(colors.length);                                //此时显示长度为22223 ,其中未赋值的获取到的都会是undefined.

    关于检测数组,这里就不再举例了,就是使用 Array.isArray() 方法来判断

    接下来就是将数组转换成字符串,可以有两种方法,一个是 toString() 方法,一个是 valueOf() 方法。 最后的结果将每个值拼接成一个字符串,并以逗号分隔。

    如果希望得到的字符串不以逗号分隔,那么可以使用数组的join方法:

    var colors = ['red' , 'green', 'blue'] ;
alert(colors.join("|"));

   

    Javascript里的数组实现的许多方法,数组本身的方法,或是数据结构方法:
  1.    push    :在数组的末尾添加元素,返回新数组的长度
  2.    pop     :移除数组的末尾元素,返回被移除的元素(与push组合即为栈)
  3.    shift     :移除数组的以一个项,返回被移除的元素(与push组合即为队列) 
  4.    unshift:在数组前端添加任意个项,返回新数组长度
  5.    concat:这个方法会先创建当前数组的一个副本。然后将接受到的参数添加到这个副本的末尾,最后返回新构建的数组(可以传入一个字符串,或是一个或多个数组)
  6.    slice    :基于当前数组中的一个或多个项创建新数组(xxxx.slice(0,3)即返回xxxx数组的前三个元素组成的数组)
  7.    indexOf:接受一个或两个参数,要查找的项和表示查找起点位置的索引(可选),如果没有第二个参数默认从0开始,从前往后查找
  8.    lastIndexOf:与上面一样,只是从后往前查找


  •     sort 方法:
  •     默认按升序排序,但是,此方法会调用每个元素的toString方法,然后比较得到的字符串,因此,即使数组中每一个都是数值类型的元素,该方法比较的也是字符串,所以在比较后会发现5比10大,所以这种排序往往不能达到目的,所有有了比较函数这个参数

    使用如下比较函数即可正常比较数值类型大小:

    functin compare(val1, val2){
        return val1 -
    }
    var values = [0, 1, 10, 5, 15 ];
    values.sort(compare);                    //得到 [0, 1, 5, 10, 15]

    

    splice方法:

  1.     删除元素:指定2个参数,要删除的第一项的位置和要删除的项数。例如 splice(0, 2)即删除前两项
  2.     插入元素:指定3个或更多参数,起始位置,0(即要删除的项数)和要插入的项,可以插入多个项,跟在第三个元素后面
  3.     替换元素:即在删除的同时进行插入操作,结合前两个操作即可        
     操作返回一个数组,其中包含原始数组中删除的项(若么有删除即为空)


    数组迭代方法:

    均接受两个参数,要在每一个元素上运行的函数和运行该函数的作用域对象---影响this的值。函数会接受三个参数,数组项的值,该项的位置,数组对象本身。

  1.     every:对数组中每一项运行给定函数,如果该函数对每一项都返回true,则返回true
  2.     filter:对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组
  3.     forEach:对数组中每一项运行给定函数,无返回值
  4.     map:对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组
  5.     some:对数组中每一项运行给定函数,如果有任意一个返回true,则返回true


    数组缩小方法:

  1.     reduce:方法会迭代数组所有项,构建一个最终返回值。接受两个参数,函数和作为缩小基础的初始值(可选)。函数有四个参数:前一个值,当前值,项的索引,数组对象。
  2.     reduceRight:从右往左,类似reduce
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值