• JavaScript课程——Day07(对象简介、Math对象、时间对象、字符串对象)


    1、对象简介

    在javaScipt中,一切皆为对象或者皆可以被用作对象

    • 宿主对象:window,document
    • 内置对象:Number  String  Boolean  Array数组  Object  Function  Error错误对象  Date时间对象 RegExp正则
    • 自定义对象:new XX();

    包装对象:

    // 真正的对象
    var obj = {
        name: 'zs', // 属性
        age: 3,
        fn: function () { // 方法
            console.log(this.name);
        }
    }
    console.log(obj.name); // 打印属性
    obj.fn(); // 调用方法
    • 按照规则,基本类型没有属性和方法,只有对象有属性和方法
    • 包装对象存在的意义:它是对基本类型说的,因为基本对象不是对象,但是它又要表现的像一个对象,就用包装对象来模拟
    // 包装对象,当str调用length属性的时候,包装对象就过来了,它提供了length属性,接着,包装对象就消失了
    console.log(str.length);
    console.log(str.charAt(2));

    面试题:

    // 面试题
    var str = '平头哥';
    str.ab = 'abcd'; // 当str调用ab属性的时候,它的包装对象就过来了,在这个包装对象下面,添加了ab属性,接着,包装对象就消失了
    console.log(str.ab); // undefined   读取ab属性的时候,包装对象就又过来了(此时过来的包装对象,不是上次的包装对象),它下面没有ab属性,所以undefined
    
    
    var obj = {
        name: 'ls'
    }
    obj.ab = 'abcd';
    console.log(obj.ab); // abcd

    2、Math对象

    // 常用数学方法
    console.log(Math.floor(3.999)); // 3 向下取整 去掉小数部分
    console.log(Math.ceil(3.001)); // 4 向上取整 只要有小数就进位
    console.log(Math.round(3.14159)); // 3 四舍五入
    console.log(Math.abs(-100)); // 100 绝对值
    console.log(Math.max(1, 2, 36, 9)); // 36
    console.log(Math.min(1, 2, 36, 9)); // 1
    console.log(Math.pow(2, 10)); // 2的10次方  1024
    console.log(Math.pow(3, 2)); // 3的平方 9
    console.log(Math.sqrt(60)); // 开根号 7.745966692414834

    随机数

    • 随机数:大于等于0,小于1的一个数
    • 适用场景:点名器、抽奖、验证码
    // 公式推理
    // 从3--8 或 2--6随机找一个数
    // 3--8:3 4 5 6 7 8:
    // 6个:8-3+1 --->  6 * 随机数 = 0--5.9999999 + 最小数 --> 3--8.99999  向下取整 3--8
    
    // 2--6:2 3 4 5 6:
    // 5个:6-2+1   ---> 5*随机数 = 0 --4.9999999 + 最小数 --> 2--6.99999 向下取整 2--6
    
    // ---------------------------------
    // 随机数公式
    // 1、大减小加1
    // 2、乘以随机数
    // 3、加上最小数
    // 4、向下取整
    
    // 封装
    function getRandom(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min);
    }
    
    for (var i = 0; i < 20; i++) {
        console.log(getRandom(10, 50));
    }

    抽奖案例:

    <body>
        <div id="box">请抽奖</div>
        <button>抽奖</button>
    
        <script>
            var arr = ['谢谢惠顾', '一等奖:一百万', '谢谢惠顾', '二等奖:二百万', '谢谢惠顾', '二等奖:1 毛钱', '三等奖:负一百万', '谢谢惠顾', '三等奖:送你去泰国'];
    
            var box = document.getElementById('box');
            var btn = document.querySelector('button');
            var timer = null;
    
    
            btn.onclick = function () {
    
                if (this.innerText === '抽奖') {
                    timer = setInterval(function () {
                        var index = getRandom(0, arr.length - 1); // 从数组中随机取出一个下标
                        box.innerText = arr[index]; // 取出数组中的某一项
                    }, 50);
    
                    this.innerText = '停止';
                } else {
                    clearInterval(timer);
                    this.innerText = '抽奖';
                }
            }
    
            function getRandom(min, max) {
                return Math.floor(Math.random() * (max - min + 1) + min);
            }
        </script>
    </body>

    3、时间对象

      3.1、创建时间

    // new Date()创建的时间,返回的都是一个对象
    
    // 没有参数
    var d = new Date(); // 创建的是当前电脑此时此刻的时间
    console.log(typeof d); // 'object'
    console.log(d.toLocaleString());
    
    
    // 有参数
    var d = new Date(2030, 10, 12, 13, 12, 10); // 传入数字:年 月 日 时 分 秒  (月:0-11代表1--12)
    
    var d = new Date('2022-12-12 10:12:12'); // 传入字符 月为正常的月
    var d = new Date('2022/11/12 10:12:12'); // 传入字符
    var d = new Date('2022,11,13 10:12:12'); // 传入字符
    console.log(d.toLocaleString());

      3.2、时间字符串表示

    var d = new Date();
    
    console.log(d);
    
    // 本地时间
    console.log(d.toLocaleString()); // 2021/4/26下午7:21:48
    console.log(d.toLocaleDateString()); // 2021/4/26
    console.log(d.toLocaleTimeString()); //下午7:21:48
    
    // 返回英文状态的时间
    console.log(d.toString()); // Mon Apr 26 2021 19:21:48 GMT+0800 (中国标准时间)
    console.log(d.toDateString()); // Mon Apr 26 2021
    console.log(d.toTimeString()); // 19:21:48 GMT+0800 (中国标准时间)

      3.3、获取时间某一部分

    var d = new Date(); // d是一个对象,它里面有很多的属性和方法
    
    var year = d.getFullYear(); //
    var month = d.getMonth(); // 月 0--11 代表 1--12
    var date = d.getDate(); //
    var week = d.getDay(); // 星期 0--6 代表 周日--周六
    
    var h = d.getHours(); //
    var m = d.getMinutes(); //
    var s = d.getSeconds(); //
    var ms = d.getMilliseconds(); // 毫秒
    
    console.log(year, month, date, week, h, m, s, ms);

      3.4、设置时间某一部分

    var d = new Date();
    // 有获取的方法,就有对应设置的方法
    
    d.setFullYear(2025); // 设置年
    d.setMonth(15); // 设置月 月要加1   具有容错的能力
    d.setDate(36); // 设置日
    
    console.log(d.toLocaleString());

      3.5、时间戳

      时间戳:返回的是1970年1月1日零时到现在经过的毫秒数

    // 方式一
    var d = new Date();
    console.log(d.getTime()); // 1619418442234
    
    // 方式二(IE8及以下不支持)
    console.log(Date.now()); // 1619418442234

      倒计时案例:

    <body>
        <h1>距五一放假还有:xx天xx小时xx分xx秒</h1>
    
        <script>
            var h1 = document.querySelector('h1');
            var future = new Date(2021, 4, 1, 0, 0, 0); // 未来时间
            auto();
            var timer = setInterval(auto, 1000);
    
            function auto() {
                // 两个对象相减,都转成数字(时间戳)
                var now = new Date(); // 当前时间
    
                var d = Math.floor((future - now) / 1000); // 毫秒转成秒
    
                if (d <= 0) {
                    clearInterval(timer);
                    h1.innerText = '放假了';
                    return;
                }
    
                var date = Math.floor(d / 86400); //
                var h = Math.floor(d % 86400 / 3600); // 小时
                var m = Math.floor(d % 3600 / 60); // 分钟
                var s = d % 60;
    
                h1.innerText = '距五一放假还有:' + date + '' + h + '小时' + m + '' + s + '';
            }
        </script>
    </body>

      3.6、moment.js

      官网:http://momentjs.cn/

    // 创建时间
    var d = moment(); // 创建当前时间
    var d = moment('2023-12-12 10:12:03'); // 创建当前时间
    
    // -------------------------------
    
    // 格式化时间
    console.log(d.format('YYYY年MM月DD日 HH:mm:ss'));
    console.log(d.format('YYYY')); //
    console.log(d.format('MM')); //
    
    // -----------------------------------
    
    // 之前和之后
    // 格式:时间.subtract(减少的数量, 时间的键);
    // 格式:时间.add(增加的数量, 时间的键);
    var d = moment().subtract(1, 'months');
    console.log(d.format('YYYY年MM月DD日 HH:mm:ss'));
    
    var d = moment().add(1, 'months');
    console.log(d.format('YYYY年MM月DD日 HH:mm:ss'));

    4、字符串对象

      4.1、创建

    var str1 = '平头哥'; // 推荐   字面量
    console.log(str1, typeof str1);
    
    var str2 = String('平头妹');
    console.log(str2, typeof str2);
    
    var str3 = new String('平头弟'); // 不建议用,认识
    console.log(str3, typeof str3); // "object"

      4.2、长度,下标,charAt

    var str = '我来优就业学习 web 前端';
    
    // 字符串.length   长度
    console.log(str.length); // 14
    
    // 字符串.charAt(下标)   返回下标对应的字符
    // 字符串[下标]    IE7及以下不支持
    console.log(str[1]); //
    console.log(str.charAt(2)); //
    
    // 字符串.charCodeAt(下标);  返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535之间的整数。
    // 将文字转成编码
    console.log(str.charCodeAt(1)); // 26469
    console.log(str.charCodeAt(2)); // 20248
    
    // 将编码转成文字
    console.log(String.fromCharCode(26469, 20248)); // 来优

      4.3、indexOf和lastIndexOf

    • 字符串.indexOf(要查找的字符[,查找的起始位置];        从前向后查找
    • 字符串.lastIndexOf(要查找的字符[,查找的起始位置]);      从后向前查找

      返回要查找的字符在字符串中首次出现的位置,如果没有,返回-1

      如果没有第二个参数(查找的起始位置),从下标0开始查找

    var str = 'abcdeabfabg';
    console.log(str.indexOf('a')); // 0
    console.log(str.indexOf('a', 1)); // 5
    console.log(str.indexOf('A')); // -1
    console.log(str.indexOf('ab', 1)); // 5
    
    console.log(str.lastIndexOf('a')); // 8
    console.log(str.lastIndexOf('ab')); // 8

    案例:封装一个函数,用于字符去重

    console.log(fn('abaabbccdc'));
    console.log(fn('aaaaa'));
    
    function fn(str) {
        var newStr = '';
        for (var i = 0; i < str.length; i++) {
            var v = str[i]; // 原字符串中的每一个字符
    
            if (newStr.indexOf(v) === -1) { // 等于-1,则证明newStr里面没有这个字符
                newStr += v;
            }
        }
        return newStr; // 去重以后的字符串返回
    }

      4.4、截取

    • 字符串.slice(起始下标,结束下标)
    // 字符串.slice(起始下标, 结束下标);     推荐使用
    // 获取字符串中起始下标到结束下标之间的字符
    // 第一个参数不能为负,第二个参数如果为负,则同长度相加
    
    var str = 'abcdefg';
    console.log(str.slice()); // abcdefg
    console.log(str.slice(2)); // cdefg
    console.log(str.slice(2, 5)); // cde  不包含第二个参数
    console.log(str.slice(2, -2)); // cde  第二个参数为负,则和长度相加
    • 字符串.substring(起始下标,结束下标)
    // 字符串.substring(起始下标, 结束下标);
    var str = 'abcdefg';
    console.log(str.substring()); // abcdefg
    console.log(str.substring(2)); // cdefg
    console.log(str.substring(2, 5)); // cde  不包含第二个参数
    console.log(str.substring(5, 2)); // cde  如果第二个参数比第一个小,则交换位置
    console.log(str.substring(2, -2)); // ab  负数同0
    • 字符串.substr
    // 字符串.substr(起始下标, 截取的个数);
    var str = 'abcdefg';
    console.log(str.substr()); // abcdefg
    console.log(str.substr(2)); // cdefg
    console.log(str.substr(2, 3)); // cde

      4.5、转大小写

    • 字符串.toUpperCase();         转大写
    • 字符串.toLowerCase();    转小写
    var str = 'abc';
    console.log(str.toUpperCase()); // ABC
    
    var str2 = 'ABC';
    console.log(str2.toLowerCase()); //abc

      4.6、split

    // 字符串.split(参数); 
    // 将字符串以参数拆分成数组
    var str = '2020-11-12'; // ['2020', '11', '12']
    console.log(str.split('-')); // ["2020", "11", "12"]
    console.log(str.split()); // ["2020-11-12"]
    console.log(str.split('')); // ["2", "0", "2", "0", "-", "1", "1", "-", "1", "2"]
    
    // ------------------------------
    // 数组.join(参数);
    // 将数组以参数拼接成字符串
    var arr = ['2020', '11', '12'];
    console.log(arr.join('-')); // '2020-11-12'
    console.log(arr.join()); // '2020,11,12'
    console.log(arr.join('')); // '20201112'

      4.7、replace

    // 字符串.replace(被替换的字符, 新的字符)
    // 返回替换以后的结果,不影响原字符串
    
    var str = '老王吃饭了';
    var v = str.replace('老王', '张新昊');
    console.log(v); // 张新昊吃饭了
    console.log(str); // 老王吃饭了

      4.8、trim

    // 字符串.trim(); 去除字符串左右空格
    // IE9及以上支持,IE8及以下,我们用正则来解决
    var str = '    平头哥    ';
    
    console.log(str);
    console.log(str.trim());
  • 相关阅读:
    BZOJ:4219: 跑得比谁都快 3007: 拯救小云公主
    BZOJ:4816: [Sdoi2017]数字表格
    BZOJ:4333: JSOI2012 智者的考验
    BZOJ:3911: SGU383 Caravans(三角剖分)
    bzoj:2595: [Wc2008]游览计划
    ZOJ3602:Count the Trees
    A Dangerous Maze (II) LightOJ
    Where to Run LightOJ
    Lights inside 3D Grid LightOJ
    Snakes and Ladders LightOJ
  • 原文地址:https://www.cnblogs.com/miaochaofan/p/14706209.html
Copyright © 2020-2023  润新知