1. 内置对象介绍

• JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象
• 前面两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象属于我们JS独有的
内置对象:就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
JavaScript提供了多个内置对象:Math、Date、Array、String等

2. 查文档

Mozilla开发者网络(MDN)提供了有关开发网络技术(Open Web)的信息,包括HTML、CSS和万维网及HTML5应用的API
MDN:https://developer.mozilla.org/zh-CN/

2.1 如何学习对象中的方法

  1. 查阅该方法的功能
    2. 查看里面的参数的意义和类型
    3. 查看返回值的意义和类型
    4. 通过demo进行测试

    3. Math对象

    3.1 Math概述

    Math对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值、取整、最大值等)可以使用Math中的成员
    1. Math.PI // 圆周率
    2. Math.floor() // 向下取整
    3. Math.ceil() // 向上取整
    4. Math.round() // 四舍五入版 就近取整 注意 -3.5 结果是 -3
    5. Math.abs() // 绝对值
    6. Math.max()/Math.min() // 求最大和最小值
    ```javascript // 1. 绝对值方法 console.log(Math.abs(1)); // 1 console.log(Math.abs(-1)); // 1 console.log(Math.abs(‘-1’)); // 1 隐式转换 会把字符串型-1转换成数字型 console.log(Math.abs(‘pink’)); // NaN

// 2. 三个取整方法 // (1) Math.floor() 向下取整 往最小了取值 console.log(Math.floor(1.1)); // 1 console.log(Math.floor(1.9)); // 1 // (2) Math.ceil() 向上取整 往最大了取 console.log(Math.ceil(1.1)); // 2 console.log(Math.ceil(1.9)); // 2 // (3) Math.round() 四舍五入 console.log(Math.round(1.1)); // 1 console.log(Math.round(1.5)); // 2 console.log(Math.round(1.9)); // 2 console.log(Math.round(-1.1)); // -1 console.log(Math.round(-1.5)); // -1

  1. <a name="CubJJ"></a>
  2. ## 3.2 数组对象Math最大值方法
  3. ```javascript
  4. // Math数学对象不是一个构造函数 所以我们不需要new来调用 而是直接使用里面的属性和方法即可
  5. console.log(Math.PI); // 一个属性 圆周率 3.141592653589793
  6. console.log(Math.max(1, 99, 3)); // 99
  7. console.log(Math.max(-1, -10)); // -1
  8. // 如果里面有非数字 返回NaN
  9. console.log(Math.max(1, 99, 'pink老师')); // NaN
  10. console.log(Math.max()); // -Infinity

3.2.1 案例:封装自己的数学对象

利用对象封装自己的数学对象 里面有PI最大值和最小值

  1. var myMath = {
  2. PI: 3.141592653,
  3. max: function () {
  4. var max = arguments[0];
  5. for (var i = 1; i < arguments.length; i++) {
  6. if (arguments[i] > max) {
  7. max = arguments[i];
  8. }
  9. }
  10. return max;
  11. },
  12. min: function () {
  13. var min = arguments[0];
  14. for (var i = 1; i < arguments.length; i++) {
  15. if (arguments[i] < min) {
  16. min = arguments[i];
  17. }
  18. }
  19. return min;
  20. }
  21. }
  22. console.log(myMath.PI); // 3.141592653
  23. console.log(myMath.max(1, 5, 9)); // 9
  24. console.log(myMath.min(1, 5, 9)); // 1

3.3 Math对象随机数方法

Math对象随机数方法 random() 返回一个随机的小数 0 =< x < 1

  1. // 1. Math对象随机数方法 random() 返回一个随机的小数 0 =< x < 1
  2. // 2. 这个方法里面不跟参数
  3. console.log(Math.random()); // 0.24949989171479725
  4. // 3. 我们想要得到两个数之间的随机整数并且包含这2个整数
  5. // Math.floor(Math.random() * (max - min + 1)) + min;
  6. function getRandom(min, max) {
  7. return Math.floor(Math.random() * (max - min + 1)) + min;
  8. }
  9. console.log(getRandom(1, 10)); // 7
  10. // 5. 随机点名
  11. var arr = ['张三', '张三丰', '张三疯子', '李四', '李思思', 'pink老师'];
  12. console.log(arr[0]); // 张三
  13. console.log(arr[getRandom(0, arr.length - 1)]); // 李思思

3.3.1 案例:猜数字游戏

案例:程序随机生成一个1~10之间的数字,并让用户输入一个数字
1. 如果大于该数字,就提示,数字大了,继续猜
2. 如果小于该数字,就提示数字小了,继续猜
3. 如果等于该数字,就提示猜对了,结束程序
案例分析:
① 随机生成一个1~10的整数 我们需要用到Math.random()方法
② 需要一直猜到正确为止,所以一直循环
③ 用while循环合适更简单
④ 核心算法:使用 if else if多分支语句来判断大于、小于、等于

  1. function getRandom(min, max) {
  2. return Math.floor(Math.random() * (max - min + 1)) + min;
  3. }
  4. var random = getRandom(1, 10);
  5. while (true) { // 死循环
  6. var num = prompt('你来猜? 输入1~10之间的一个数字');
  7. if (num > random) {
  8. alert('你猜大了');
  9. } else if (num < random) {
  10. alert('你猜小了');
  11. } else {
  12. alert('你好帅哦,猜对了');
  13. break; // 退出整个循环结束程序
  14. }
  15. }
  16. // 要求用户猜1~50之间的一个数字,但是只有10次猜的机会

4. 日期对象

4.1 Date概述

• Date对象和Math对象不一样,它是一个构造函数,所以我们需要实例化后才能使用
• Date实例用来处理日期和时间

4.2 Date()方法的使用

1. 获取当前时间必须实例化

  1. var now = new Date();
  2. console.log(now);

2. Date()构造函数的参数
如果括号里面有时间,就返回参数里面的时间。例如日期格式字符串为’2019-5-1’,可以写成new Date(‘2019-5-1’)

4.3 日期格式化

我们想要2019-8-8 8:8:8格式的日期,要怎么办?
需要获取日期指定的部分,所以我们要手动的得到这种格式。

方法 说明 代码
getFullYear() 获取当年 dObj.getFullYear()
getMonth() 获取当月 dObj.getMonth()
getDate() 获取当天日期 dObj.getDate()
getDay() 获取星期几(周日0到周六6) dObj.getDay()
getHours() 获取当前小时 dObj.getHours()
getMinutes() 获取当前分钟 dObj.getMinutes()
getSeconds() 获取当前秒钟 dObj.getSeconds()
  1. // 格式化日期 年月日星期
  2. var date = new Date();
  3. console.log(date.getFullYear()); // 2020 返回当前日期的年
  4. console.log(date.getMonth() + 1); // 10 返回的月份小1个月 记得月份+1
  5. console.log(date.getDate()); // 12 返回的是几号
  6. console.log(date.getDay()); // 2 周一返回的是1 周六返回的是6 但是周日返回的是0
  7. // 我们写一个2019年5月1日 星期三
  8. var year = date.getFullYear();
  9. var month = date.getMonth() + 1;
  10. var dates = date.getDate();
  11. var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
  12. var day = date.getDay();
  13. console.log('今天是: ' + year + '年' + month + '月' + dates + '日' + arr[day]); // 今天是: 2021年10月12日星期二
  14. // 格式化日期 时分秒
  15. var date = new Date();
  16. console.log(date.getHours()); // 时
  17. console.log(date.getMinutes()); // 分
  18. console.log(date.getSeconds()); // 秒
  19. // 要求封装一个函数返回当前的时分秒 格式 08:08:08
  20. function getTimer() {
  21. var time = new Date();
  22. var h = time.getHours();
  23. h = h < 10 ? '0' + h : h;
  24. var m = time.getMinutes();
  25. m = m < 10 ? '0' + m : m;
  26. var s = time.getSeconds();
  27. s = s < 10 ? '0' + s : s;
  28. return h + ':' + m + ':' + s;
  29. }
  30. console.log(getTimer()); // 15:24:05

4.4 获取日期的总的毫秒形式

Date对象是基于1970年1月1日(世界标准时间)起的毫秒数
我们经常利用总的毫秒数来计算时间,因为它更精确

  1. // 获得Date总的毫秒数(时间戳)不是当前事件的毫秒数 而是距离1970年1月1号过了多少毫秒数
  2. // 1. 通过valueOf() getTime()
  3. var date = new Date();
  4. console.log(date.valueOf()); // 就是我们现在时间距离1970.1.1总的毫秒数
  5. console.log(date.getTime());
  6. // 2. 简单的写法(最常用的写法)
  7. var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
  8. console.log(date1);
  9. // 3. H5新增的 获得总的毫秒数
  10. console.log(Date.now());

4.5 案例:倒计时效果

案例:做一个倒计时效果
image.png
案例分析:
1. 核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的
2. 用时间戳来做,用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数
3. 把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)
转换公式如下
• d = parseInt(总秒数/60/60/24); // 计算天数
• h = parseInt(总秒数/60/60%24); // 计算小时
• m = parseInt(总秒数/60%60); // 计算分数
• s = parseInt(总秒数%60); // 计算当前秒数

  1. function countDown(time) {
  2. var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
  3. var inputTime = +new Date(time); // 返回的是用户输入时间总的毫秒数
  4. var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
  5. var d = parseInt(times / 60 / 60 / 24); // 天
  6. d = d < 10 ? '0' + d : d
  7. var h = parseInt(times / 60 / 60 % 24); // 时
  8. h = h < 10 ? '0' + h : h
  9. var m = parseInt(times / 60 % 60); // 分
  10. m = m < 10 ? '0' + m : m
  11. var s = parseInt(times % 60); // 当前的秒
  12. s = s < 10 ? '0' + s : s
  13. return d + '天' + h + '时' + m + '分' + s + '秒';
  14. }
  15. console.log(countDown('2021-10-12 18:00:00')); // 00天01时38分27秒
  16. var date = new Date();
  17. console.log(date); // Tue Oct 12 2021 16:21:32 GMT+0800 (中国标准时间)