js学习笔记(二)

来源:互联网 发布:java连接ldap 编辑:程序博客网 时间:2024/05/18 00:13
js引用类型
    在js中,引用类型是一种数据结构,用于将数据和功能组织在一起。在js中引用类型有如下几种:
一,Object类型
    其实,从我学习js以来,看到的最多的一种引用类型就是Object,它并不具备太多的功能,一般在应用程序的存储和传输数据时用到。
    创建Object类型有两种方式:
        1.使用new操作符 ,例如: var o = new Object();o.name = "kui";o.sex = "男";
        2.对象字面量表示,例如:var o = {name:"kui",sex:"男"};也可:var o = {};o.name = "kui";o.sex = "男";这个和上面的是一样的。
    在访问对象属性方面,js有2种方法,    
        1.和其他面向对象语言一样,使用点表示法。o.name
        2.使用方括号,o["name"],
二,Array类型
    不同于其他面向对象的语言,js的array有很大的不同,首先是保存数据上,js的数组中每一项都可以保存不同类型的数据,也就是说,在同一个数组中,第一项是number,第二项可以是string,null等,其次是数组的长度,js数组的长度类似于Java的list,可动态的根据数据的增加来扩展长度。
    js创建数组有两种方式
        1.var arr = new Array();在圆括号里面可以加上该数组的长度,也可以是数组包含的项,var arr = new Array("xing","shu","kui");在使用该方法时也可以省略new操作符(了解,创建的时候最好加上)
        2.使用数组字面量创建数组:var arr = ["xing","shu","kui"];
    读取和操作数组:数组名[基于0的数字索引],arr[0] = "xing",,设置数组值的时候,arr[1] = "xsk",它会修改第二项的值,这时候,需要注意一个问题,当[]内的数字大于arr.length时的情况,当数值大于数组的长度时,数组长度会自动增加,会在数组末尾加上该项,例如
            arr[0] = "xing";
            arr[1] = "shu"; arr[2] = "kui"; arr[3] = "xsk";
    这时,arr.length = 4,数组会增加一项,此时,若arr[5] = "k",打印arr[4]会出现undefined。
    对于数组 的length属性,它并不是只读的,通过设置这个属性,可以从数组末尾移除或者添加新的项,例如:
            arr.length = 2;
            alert(arr[2])------此时会打印出undefined,只保存了前两项,后面的全部移除。
            arr.length = 4;
            alert(arr[3])-----undefined
    设置新的项时:arr[arr.length] = "x";arr[arr.length] = "k";此时arr[4] = "x",arr[5] = "k"(这个方法挺好用);
    检测数组:目前检测某个变量是否为数值有两种方法:1,instanceof操作符(会存在一些问题,仅在一个网页或者一个全局作用域而言),2,Array.isArray(value)函数,仅在IE9以上,Firefox4,Safari5+和谷歌浏览器可以使用。
    转换方法:js中所有的对象都有一个toString(),valueof(),toLocaleString()方法,对于数组:
            var  arr = ["xing","shu","kui"];
            arr.toString()------xing,shu,kui;
            arr.valueof()------xing,shu,kui;
            alert(arr)-----xing,shu,kui; 
    默认情况下都会以都好分隔打印,这里可以使用join(),方法来用不同的方式分隔,
            arr.join("||");-----xing||shu||kui
    上述所有转换打印方式中,如果遇到null,undefined,js会以空字符串的形式 返回,
    数组的栈方法:js的数组提供一种类似与其他数据结构的方法,具体来说,数组可以表现的像栈一样,它有push():推入,pop():弹出,push()方法:可以接收任意数量的参数,并将它们添加到数组的末尾,并返回修改后数组的长度,而pop()方法,是从数组末尾移除一项,并返回移除的项,
            var arr = new Array();
            var count = arr.push("x","s"); -----count = 2
            count = push("k");------count = 3;
            var v = arr.pop();-----k,取最后一项 v = "k";
    队列方法:栈是先进后出,而队列则是先进先出,队列取数据的方式是shift();它移除数组中的第一项,并返回该项,和push();结合使用。同时,数组还提供了unshift()方法,它和shift()方法的功能相反,它是在数组前端添加任意项,通常和pop()结合使用,达到添加和删除。需要注意的是unshift()方法并不是逐个添加,如下:
            var arr = [];
            arr.unshift("x","s");
            alert(arr.pop());------s
     排序方法:js中数组的排序方法:reverse()和sort(),其中reverse()是反转数组所有项,例如:
             var arr = [1,22,3,16,5];
            arr.reverse()-------5,16,3,22,1
对于sort()方法会调用数组每一项的toString()方法,即使数组中的是number,这样比较的就回是字符串,如上述arr
            arr.sort();------1,16,22,3,5
所以,通常情况下,使用sort()时会给其传一个参数,其实是一个函数,如下:
             function com(val1,val2){
        if(val1-val2>0){
            return 1;
        }else if(val1-val2<0){
            return -1;
        }else{
            return 0;
        }
    }
,由于比较的是val1-val2,函数也可直接写为:
                     function com(val1,val2){
        return val1-val2;
    }
    一些操作方法:js提供了一些操作数组中的项的方法:
                1.concat()方法,用法:参数可以是数组或者单个值,也可以为空,当为空时,该方法只是简单的复制数组。
                    var arr = ["xing","shu","kui"];
                    var arr1 = arr.concat("x",["s","k"]);-------xing,shu,kui,x,s,k,
                2.slice(),slice(arg),该方法返回从参数指定位置开始到数组结束的所有项,也可以有两个参数,返回起始和结束位置之间的项,但不包括结束位置的项:
                    var arr = ["xing","shu","kui","x","s","k"];
                    var arr1 = arr.slice(1)---------shu,kui,x,s,k
                    var arr2 = arr.slice(1,4)-----shu,kui,x;(理解为返回项目数为两个参数的差)。这个还需要注意的是传入的参数如果是负数,js会用数组的长度加上该负数来确定这个位置的数值,如果结束位置小于开始位置,返回空。
                3.splice()方法:一,删除:splice(0,2)----删除数组中前两项,并返回这两项
                                         二,插入:splice(arg1,arg2,arg3,arg4,.....)----从arg1开始插入arg3,arg4......,arg2要删除的项数(number)
                                         三,替换:splice(arg1,arg2,arg3,arg4,.....)----从arg1开始插入,arg3,arg4.....,同时删除第arg2项。
        4.indexOf()和lastIndexOf():indexOf(arg),从起点开始arg在数组中的索引,同理,lastIndexOf(),从后面开始:
                    var arr = ["x","s","k","s"];
                    arr.indexOf("s")---1
                    arr.lastIndexOf("s")---3

0 0
原创粉丝点击