美文网首页
内置对象

内置对象

作者: 大庆无疆 | 来源:发表于2019-02-15 00:24 被阅读0次

    JavaScript的对象有三种:自定义对象、内置对象、浏览器对象
    ECMAScript中的对象:自定义对象 、内置对象

    内置对象也可以叫做全局对象

    常用内置对象

    1、Math对象

    Math 是一个内置对象, 它具有与数学相关的属性和方法。不是一个构造函数。(是使用对象字面量的方式创建出来的,所以他的成员都为静态成员)

    (1)Math.PI    //圆周率
    (2)Math.random()    //生成[0,1)的随机数
    (3)Math.floor()/Math.ceil()    //向下取整/向上取整
    (4)Math.round()    //四舍五入(不简单)
    (5)Math.abs()    //绝对值(传入 null 将返回 0)
    (6)Math.max()/Math.min()    //求一组数的最大值/最小值(参数不是数组)
    (7)Math.sin()/Math.cos()  //正弦/余弦
    (8)Math.pow()/Math.sqrt()    //求指数次幂/求平方根
    例子:
    Math.pow(2,3) ;  //8
    Math.sqrt(9); // 3
    
    2、Date对象

    Date对象是一个构造函数,使用之前要先要new出实例对象才能调用Date中的实例成员

    Date的构造函数有几种
    new Date();
    new Date(value);  //毫秒值
    new Date(dateString);  //时间字符串
    new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
    

    获取当前时间的毫秒值
    var date = new Date(); //创建Date对象
    console.log(date.getTime()); //调用getTime()方法

    快速获取当前时间的毫秒值
    var num = + new Date(); // 利用+号将Date对象转为数值(+好在这里是取正的意思)
    console.log(num);


    格式化时间的例子使用

    //写一个函数返回这个格式的时间(年-月-日 时:分:秒)
        function formatDate(d) {
            if(!(d instanceof Date)) {
                console.error("您传入的对象不是一个Date对象,请确认后重新输入");
            }
            //获取年月日
            var year = d.getFullYear(),
                month = d.getMonth(),
                date = d.getDate(),
                //关于时间的单词后面都有s
                hours = d.getHours(),
                minutes = d.getMinutes(),
                seconds = d.getSeconds();
            //为了保证显示的结果都为两位数显示,判断小于10的值加个0
            month = month < 10 ? '0' + month : month;
            date = date < 10 ? '0' + date : date;
            hours = hours < 10 ? '0' + hours : hours;
            minutes = minutes < 10 ? '0' + minutes : minutes;
            seconds = seconds < 10 ? '0' + seconds : seconds;
    
            return year + '-' + month + '-' + date + '  ' + hours + ':' + minutes + ':' + seconds;
        }
    

    计算时间差

        //计算时间差,返回相差的天,时,分,秒
        /*思路:
        1、两个date对象可以直接相减,返回的值是相差的毫秒值,其实在内部调用了两个对象的valueOf()方法
        2、怎么计算相差的天呢?这是个数学问题
        豪秒值/1000=秒数,秒数/60=分钟,分钟/60=小时,小时/24=天   
    
        相差的天数:毫秒值/1000/60/60/24
        相差的小时数:毫秒值/1000/60/60%24
        相差的分钟数:毫秒值/1000/60%60
        相差的秒数:毫秒值/1000%60
    
        3、我们需要返回多个值,所以可以想到返回一个函数,把需要返回的值放在函数的属性里,需要时就拿出来
        */
    
        function timeInterval(start, end) { //传入的参数为Date对象
            //判断输入的参数是否为Date对象,否则退出函数
            if((!(start instanceof Date)) || (!(end instanceof Date))) {
                console.error('你输入的参数不正确,请确认后重输');
                return;
            }
            //计算时间相差的毫秒值
            var millisecond = end - start;
            //计算相差的天、小时、分钟、秒数
            var day = Math.round(millisecond / 1000 / 60 / 60 / 24);
            var hours = Math.round(millisecond / 1000 / 60 / 60 % 24);
            var minutes = Math.round(millisecond / 1000 / 60 % 60);
            var seconds = Math.round(millisecond / 1000 % 60);
    
            return {
                day: day,
                hours: hours,
                minutes: minutes,
                seconds: seconds
            }
        }
    

    3、数组对象

    • 创建数组对象的方式:
        (1)使用字面量创建
        var arrays = [];    //创建空数组对象
        var arrays = [1,2,4];   //创建有元素的数组对象
        (2)使用构造函数创建
        var arrays = new Array();   //创建空数组对象
        var arrays = new Array(2,5,3,1);
    他们本质都一样,只是方式不同,一般使用(1)中的方法,因为比较简洁
    
    • 判断一个变量是否为数组对象
        // 1、使用 instanceof
        var arr = [4];
        function judgeArray(arr) {
            if(!(arr instanceof Array)) {
                console.log('不是数组');
                return;
            }else {
                console.log('是数组');
            }
        }
        judgeArray(arr);
    
        // 2、使用Array的isArray()方法----》新增的方法
        function judgeArray(arr) {
            if(Array.isArray(arr)) {
                console.log('是数组');
            }else {
                console.log('不是数组');
            }
        }
    
    • 清空数组

        var arrays = [3, 5, 2, 66, 2];
    
        第一种(推荐)
        arrays = [];    
        第二种
        arrays.length = 0;  //将长度设为0
        第三种
        arrays.splice(0, arrays.length);    //利用splice()方法删除元素
    
    
    • 数组常用方法

    分类:
        1、栈操作(先进后出)
        push()  在数组后边追加内容,push方法里面可跟多个参数,方法返回值是数组的总长度
        pop() 取出数组中的最后一项,相当于把最后一项从数组中移除,length属性会改变
    
        var arrays = [3,4,5];
        console.log(arrays);
        arrays.push(6,7);   在数组后追加内容,此时数组的总长度为5
        var last = arrays.pop();    取出数组中的最后一个元素
        console.log(last);  
    
    //--------------------------------------------------------------------
    
        2、队列操作(先进先出)
        push()  在数组后边追加内容,push方法里面可跟多个参数,方法返回值是数组的总长度
        unshift() 在数组最前面插入内容,unshift()方法里面可跟多个参数,方法返回值是数组的总长度
        shift() 取出数组中的第一个元素,相当于把第一个元素从数组中移除,length属性会改变
    
        var arrays = [1,2,3];
        arrays.push(4,5);
        console.log(arrays);
        arrays.unshift(-1,0);
        console.log(arrays);
        var first = arrays.shift();
        console.log(arrays);
        console.log(first);
    
    //--------------------------------------------------------------------
    
        3、排序方法
        reverse()   翻转数组
        sort()  从小到大排序
        注意:他们都改变了原数组 
    
        var nums = [3,2,7,44,8,7]; //数字数组
        var strs = ['sfs','fgc','weq','oi','d','a'];    //字符串数组
        //翻转数组
        nums.reverse();
        strs.reverse();
        console.log(nums);
        console.log(strs);
        
        (1)sort()方法默认情况下(即不带参数)对字符编码(ASCII)进行排序,比较的时候会先比较每个元的第一位
            ,然后再比较第二位,然后...,所以9会比12大。
        (2)通常情况下我们都会给sort()方法传入一个函数指定排序的规则
    
        strs.sort();
        nums.sort(function (a,b) {  //这个sort()写了一个函数当做参数,指定数值之间的升序排序规则
            return a - b;   //升序排序
            // return b - a;    //降序排序
        });
    
        (拓展练习)根据字符串的长度来排序
        var strArrays = ['asdf', 'ad', 'sdfdd', 'd'];  //字符串数组
        console.log(strArrays); //排序前['asdf', 'ad', 'sdfdd', 'd']
        strArrays.sort(function (a, b) {
            // return a.length - b.length; //升序排序
            return b.length - a.length; //降序排序
        });
        console.log(strArrays);//排序后["sdfdd", "asdf", "ad", "d"]
    
    • 操作方法

        var arrs2 = ['heqing', 'jialing'];
    
    1、 concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
    2、slice(start, end) 方法返回一个新的数组对象,这一对象是一个由 begin和 end(不包括end)决定的原数组的浅拷贝。原始数组不会被改变。
    3、splice(删除的起始位置,删除的个数,添加的元素1,添加的元素1..)方法通过删除现有元素和/或添加新元素来修改数组,并以数组返回原数组中被修改的内容(直接修改数组内容);
    4、indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
          console.log(arrs2.indexOf('heqing')); //输出0
    5、join() 方法将一个数组的所有元素连接成一个字符串并返回这个字符串。元素之间的分隔符为join()的参数,默认为逗号。
          console.log(arrs2.join('|'));  //输出heqing|jialing。
    
    (可选html5中的方法)
    6、filter()方法
    //在数组[20, 40,60,32,66]中,将大于40的数值删除掉
        // 思路:使用filter()方法,他会返回一个新数组。传入的参数是一个函数。
        var arrs = [20, 40,60,32,66];
        var newArrs = arrs.filter(function (item) {
            return item < 40; //保留小于40的值
        });
        console.log(newArrs);   //输出[20, 33]
    

    相关文章

      网友评论

          本文标题:内置对象

          本文链接:https://www.haomeiwen.com/subject/wtzyeqtx.html