JS引用类型介绍(一)



  • 引用类型是js中非常重要的一种数据格式,js赋予了这种数据格式非常强大的属性以及方法,而且也给出了很大的扩展空间,这使得之后的框架可以在此基础上发展起来

    Js中给出的引用类型分为7类,本片将介绍Object类型,Array类型,Date类型

    Object类型

    Object类型是使用最多的一个类型,是存储数据以及传输数据的理想选择
    访问对象属性可以用点表示法,也可以使用方括号表示法

    //创建对象
    let person = new Object(); //方式一
    let person = {             //方式二
        name: "",
        age: 8
    }
    //访问对象
    alert(person.name);
    alert(person["name"]);
    

    Array类型

    创建数组的方式有很多

    let colors = new Array();
    let colors = new Array(20);
    let colors = new Array("bule");
    let colors = Array(20);
    let colors = Array("bule");
    let colors = ["blue","red","green"];
    let colors = [];
    

    可以通过数组的属性length来访问数组,添加数组元素

    检测数组

    检测对象是否属于数组

    • instanceof()
    • isArray()
    if(value instanceof Array){     //ture or false
        //执行操作
    }
    if(Array.isArray(value)){     //ture or false
        //执行操作
    }
    

    转换方法

    把数组转换成为string等其他类型

    • valueOf()
    • toString()
    • toLocaleString()
    • join()
    let colors = ["blue","red","green"];
    alert(colors.join(","));     //blue,red,green
    alert(colors.join("||"));     //blue||red||green
    

    栈方法

    数组可以使用下面方法实现栈(LIFO)的数据结构,对数组的末端进行操作

    • push()
      推入到数组的最后一项
    • pop()
      移除并取得数组最后一项

    队列方法

    数组可以使用下面方法实现队列(FIFO)的数据结构,对数组开头和结尾进行操作

    • push()
    • shift()
      移除并取得数组第一项
    • unshift()
      推入到数组的第一项

    重排序方法

    对数组中的元素重新排序

    • reverse()
      反转数组的顺序
    • sort()
      按升序对数组进行排序,先对数组的每个元素调用toString()的方法
    let values = [0,1,5,10,15];
    values.sort();
    alert(values);      //0,1,10,15,5  比较字符
    //要实现真正排序,需要写下面的函数
    function conmpare(value1,value2){
        if(value1 < value2){
            return -1;
        }
        if(value1 > value2){
            return 1;
        }else{
            return 0;
        }
    }
    values.sort(compare);
    alert(values);      //0,1,5,10,15  升序,若实现降序,将return -1改成return 1即可
    
    //简单的排序函数
    function compare(vaule1,value2){
        return value2-value1;
    }
    

    操作方法

    • concat()
      连接几个数组,返回一个数组
    • slice()
      基于当前数组创建一个新的数组,接受一个或者两个参数
    let colors = ["blue","red","green","yellow","purple"];
    let colors1 = colors.slice(1));     //red,green,yellow,purple
    let colors2 = colors.slice(1,4));     //red,green,yellow
    
    • splice()
      接受两个以上的参数,参数1-->起始位置,参数2-->删除几项,之后的参数表示需要插入的项,splice()方法可以实现对数组元素的删除,插入和替换
    let colors = ["blue","red","green","yellow","purple"];
    //删除
    let delete = colors.splice(0,1);    
    //colors = ["red","green","yellow","purple"] delete = ["blue"]
    
    //插入
    let insert = colors.splice(1,0,"orange","black");   
    //colors = ["red","orange","black","green","yellow","purple"]  insert = []空数组
    
    //替换
    let replace = colors.splice(1,1,"blue");   //colors = ["red","blue","black","green","yellow","purple"] replace = ["orange"]
    

    位置方法

    查找数组中某个元素位于数组中的位置(索引)

    • indexOf()
    • lastIndexOf()

    迭代方法

    迭代方法是对函数每一项进行操作,一共为数组定义了5个迭代方法

    • every()
      对数组每一项运行函数,如果每一项都返回ture,则返回ture
    • filter()
      对数组每一项运行函数,该函数会返回ture的项组成的数组
    • forEach()
      对数组每一项运行函数,没有返回值
    • map()
      对数组每一项运行函数,返回每次函数调用的结果组成的数组
    • some()
      对数组每一项运行函数,如果该函数任意一项返回ture,该函数返回ture
    let numbers = [1,2,3,4,5,4,3,2,1];
    
    let everyResult = numbers.every(function(item,index,array){
        return (item > 2);
    }) //everyResult = false
    
    let someResult = numbers.some(function(item,index,array){
        return (item > 2);
    }) //someResult = ture
    
    let filterResult = numbers.filter(function(item,index,array){
        return (item > 2);
    }) //filterResult = [3,4,5,4,3]
    
    let mapResult = numbers.map(function(item,index,array){
        return (item * 2);
    }) //mapResult = [2,4,6,8,10,8,6,4,2]
    
    numbers.forEach(function(item,index,array){
        //执行操作
    }) //没有返回值
    

    归并方法

    可以理解为数组求和(求积)

    reduce() reduceRight()两个方法都会遍历数组,一个从数组第一项开始遍历,一个从最后一项开始遍历

    let values = [1,2,3,4,5];
    let sum = values.reduce(function(prev,cur,index,array){
        return prev + cur;
    })//sum = 15
    

    第一次执行时,prev = 1,cur = 2
    第二次执行是,prev为上一次返回的结果3(prev+cur),cur = 3

    Date类型

    创建日期对象传入的时间格式必须是毫秒数,所以提供了转换格式的方法

    • Date.parse()
    • Date.UTC()
    //把日期格式转换成为毫秒数
    let someDate = new Date("May 25, 2019");
    
    //获得当前时间
    let nowDate1 = Date.now();
    let nowDate2 = +new Date()
    

    继承的方法

    与其他引用类型一样,Date类型改写了valueOf(),toString(),toLocaleString()三个方法
    valueOf()方法返回时间对应的毫秒数
    toString()方法返回带时区信息的日期和时间
    toLocaleString()方法返回的不带时区信息的日期和时间

    日期格式化方法

    • toDateString()
    • toTimeString()
    • toLocalDateString()
    • toLocalTimeString()
    • toUTCString()

    日期/时间组件方法

    方法很多,不一一列举


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待