内置对象

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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容