22-内置对象

一、Math对象

1.获取π

Math.PI

2.最大值/最小值

Math.max()
Math.min()

3.取整

Math.floor():地板函数,向下取整        1.9999 => 1
Math.round():四舍五入                        1.5 => 2
Math.ceil():天花板函数,向上取整        1.000001 => 2

4.生成一个随机数

Math.random():生成[0,1)范围的随机数

  • 和取整搭配使用,生成一个n~m的随机数
  • Math.floor(Math.random()*m-n+1)+n

5.绝对值

Math.abs()

6.次幂和平方

Math.pow(num, power);//求num的power次方
Math.sqrt(num);//对num开平方

7.案例时间

猜数字小游戏

        function getNum() {
            // 获取0 - 100的随机整数
            var num = Math.floor(Math.random() * 101);
            var a = prompt('请输入你猜的数字0~100');
            // 次数
            var i = 5;
            while (true) {
                if (i > 1) {
                    if (a === num) {
                        // alert('恭喜您猜对啦,只用了' + 5 - i + '次,正确数字是' + num + '');
                        alert(`恭喜您猜对啦,只用了${5 - i}次,正确数字是${num}`);
                        break;
                    } else if (a > num) {
                        // 猜错了就减一次机会
                        a = prompt(`${a}太大了,您还有${--i}次机会`);

                    } else if (a < num) {
                        a = prompt(`${a}太小了,您还有${--i}次机会`);
                    }
                } else {
                    alert('次数超过,游戏失败');
                    break;
                }
            }
        }
        getNum();
    </script>

随机颜色

    <script>
        // 获取一个随机rgba颜色和十六进制
        //取值0-255
        function getColor() {
            var r = Math.floor(Math.random() * 256);
            var g = Math.floor(Math.random() * 256);
            var b = Math.floor(Math.random() * 256);
            var a = Math.floor(Math.random() * 10) / 10;
            // return 'rgb(' + r + ',' + g + ',' + b + ')';
            return `rgba(${r},${g},${b},${a})`
        }
        console.log(getColor());

        var arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
        var str = '#';
        function getColor2() {
            // 六位数
            for (var i = 0; i < 6; i++) {
                // 索引数 = 长度 - 1
                str += arr[Math.floor(Math.random() * 16)];
            }
            return str;
        }
        console.log(getColor2());
    </script>

二、date对象

用日期对象的时候一定要先new出来

    <script>
        // js中提供一个对象专门用来处理时间日期  Date对象
        // Math对象是一个静态对象。就是使用的时候不需要new的对象

        //使用日期对象的时候一定要先new出来
        var date = new Date();    //date对象中存有日期相关的所有的数据
        console.log(date);//Fri Apr 24 2020 07:14:42 GMT+0800 (中国标准时间)

        console.log(date.toDateString());   //Fri Apr 24 2020
        console.log(date.toLocaleDateString());  //2020/4/24
        console.log(date.toTimeString());   //07:14:42 GMT+0800 (中国标准时间)
        console.log(date.toLocaleTimeString());  //上午7:14:42

    </script>
getTime()  返回毫秒数和valueOf()结果一样
getMilliseconds()  当地时间返回时间的毫秒
getSeconds()  返回0-59
getMinutes()  返回0-59
getHours()   返回0-23
getDay()     返回星期几 0周日   6周6
getDate()    返回当前月的第几天,当月的几号
getMonth()   返回月份,从0开始
getFullYear()   返回4位的年份  如 2016
        var date = new Date();

        //获取毫秒数
        console.log(date.getTime());   //返回当前时间对应毫秒数 

        //获取毫秒
        console.log(date.getMilliseconds());  //当前日期中的毫秒数  1秒= 1000毫秒

        //获取当前时间的秒数
        console.log(date.getSeconds());

        //获取当前时间的分钟
        console.log(date.getMinutes());

        //获取当前的小时
        console.log(date.getHours());


        //获取日期(多少号)
        console.log(date.getDate());

        console.log(date.getDay());   //星期几  而且是从0开始的,一周的第一天是周日


        //获取当前的月份
        console.log(date.getMonth());  //月是从0开始算


        // 获取当前的年份   返回的是一个4位的年份
        console.log(date.getFullYear());

4.案例

封装格式化时间

  <script>
    //    补0
    let addZero = a => a < 10 ? '0' + a : a;
    //格式化时间
    let date = new Date();
    // 星期天是第一天
    let arr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
    let y = date.getFullYear();
    let mon = date.getMonth() + 1;//月从0开始
    let d = date.getDate();
    let h = date.getHours();
    let min = date.getMinutes();
    let s = date.getSeconds();
    let w = date.getDay();

    console.log(`${y}-${addZero(mon)}-${addZero(d)}\t${addZero(h)}:${addZero(min)}:${addZero(s)}\t${arr[w]}`);

  </script>

倒计时

  <script>
    let addZero = a => a < 10 ? '0' + a : a;

    let date = new Date();

    //倒计时的时间
    let date2 = new Date(2020, 11, 31);//设置的时候,月份要减1

    // 倒计时距离现在的秒
    let time = (date2 - date) / 1000;

    // 将秒转化成天,小时,分钟
    let d = Math.floor(time / 60 / 60 / 24);
    // 将不够天数的转为小时
    let h = Math.floor(time / 60 / 60 % 24);
    let m = Math.floor(time / 60 % 60);
    var s = Math.floor(time % 60);

    console.log(`距离2020-12-31还剩${addZero(d)}天${addZero(h)}时${addZero(m)}分${addZero(s)}秒`);
  </script>

计算程序耗费时间

  <script>
    // 开始的时间戳
    let start = +new Date();
    //程序体
    for (let i = 0; i < 9999; i++) {
      console.log('小艾同学');
    }
    // 结束的时间戳
    let end = +new Date();
    // 耗费的毫秒
    let time = end - start;
    console.log(`耗时${time}毫秒`);
  </script>

三、String对象

String可以遍历,但不能根据索引修改内容

  • String的所有方法都不会修改原字符串

1.indexOf()

查询字符在字符串中的索引

    let str = '小艾6866同学666';
    console.log(str.indexOf('艾'));//1
    // 当字符串有多个该字符,只会返回第一个的索引
    console.log(str.indexOf(6));//2
    // 跟两个参数是,前一个是要查询的字符,后一个是start的索引
    console.log(str.indexOf(6, 6));//8
    // 当查询连续字符串时候,是将它作为一个整体查询,返回的第一个字符出现的索引
    console.log(str.indexOf(66));//4
    console.log(str.indexOf(9));//-1

2.trim()

去掉首尾的空格,用于搜索条

    let str2 = '   小 艾 同 学   '
    console.log(str2);//   小 艾 同 学   
    // 只会去除首尾空格,中间的不回会去
    console.log(str2.trim());//小 艾 同 学 

3.大小写

    let str3 = 'abcdEFG'
    console.log(str3.toUpperCase());//ABCDEFG
    console.log(str3.toLowerCase());//abcdefg

4.concat()字符串拼接

console.log(str.concat(str2, str3));

5.截取字符串

  <script>
    let str = 'abcdefg';

    // 一个参数:就是开始截取的索引start,从strat开始全部提取
    console.log(str.slice(2));//cdefg
    console.log(str.substring(2));//cdefg
    console.log(str.substr(2));//cdefg

    //二个参数:第一个参数是开始的索引strat,第二个是结束的索引end
    // 从start开始截取到end,取不到end
    console.log(str.slice(2, 4));//cd
    console.log(str.substring(2, 4));//cd

    //二个参数:第一个参数是开始的索引strat,第二个是截取的个数
    console.log(str.substr(2, 4));//cdef

    // substring不能跟负数
    console.log(str.substring(-1));//abcdefg
    // 跟负数表示从后到前截取多少个
    console.log(str.substr(-2));//fg
    console.log(str.slice(-3));//efg

    // 始终不会改变原字符串
    console.log(str); //abcdefg
  </script>

6.replace()字符串替换

    // 前面是要把谁替换,后面是替换他的新字符,不限个数
    console.log(str.replace('d', 'DD'));//abcDDefg

    // 始终不会改变原字符串,需要重新赋值才行
    console.log(str); //abcdefg

7.split()字符串切割

  <script>
    let str = 'a-b-c-d-e-f-g';

    // 参数是空字符串,代表将字符串中的每一项都分开到一个新的数组中
    console.log(str.split(''));//["a", "-", "b", "-", "c", "-", "d", "-", "e", "-", "f", "-", "g"]
    // 参数是符号,就是将字符串以该符号进行分割
    console.log(str.split('-'));//["a", "b", "c", "d", "e", "f", "g"]
    console.log(str);//不会改变原字符串//a-b-c-d-e-f-g

  </script>

8.charAt()

    // 根据索引查找该位置的字符串
    console.log(str.charAt(2));//b

四、基本包装类型

只有Number、String、Blooean有基本包装类型,undefined和null没有

      var num = 123;
      var result = num.toString();
      // // 发生了三件事情
      // 1. 把简单类型转换成复杂类型:var s = new Number(num);
      // 2. 调用包装类型的toString方法:var result = s.toString();
      // 3. 销毁刚刚创建的复杂类型
posted @ 2020-04-28 20:00  小艾同学喔  阅读(157)  评论(0编辑  收藏  举报