内置对象

2019-02-15  本文已影响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]
上一篇下一篇

猜你喜欢

热点阅读