JavaScript-----13.内置对象 Math()和Date()
1. 内置对象
- js对象分为3种:自定义对象(var obj={})、内置对象、浏览器对象。
- 前两种对象是js基础内容,属于ECMAScript,第三个浏览器对象是js独有的。讲js API的时候会讲。
- 内置对象:js语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或者最基本而必要的功能(属性和方法),比如求最大值最小值,就不需要自己再去写相关的代码就可用直接利用内置对象得出。程序员将不关心内部是怎么实现的,只要拿出一组数来,就可以直接求出最大值和最小值。
- 内置对象最大的优点,是帮助我们快速开发。
- js提供了多个内置对象:Math、Date、Array、String等
2. 查文档
MDN/W3C
MDN官方网址
https://developer.mozilla.org/zh-CN/
如何学习对象中的方法:
step1:查阅该方法的功能
step2:查看里面参数的意义和类型
step3:查看返回值的意义和类型
step4:通过demo进行测试
3. Math对象
3.1 Math.PI、 Math.max()、 Math.min()
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math
//Math数学对象 不是一个构造函数 不需要new一下就可用使用 而是直接用里面的属性和方法即可
console.log(Math.PI); //3.141592653589793 一个属性 圆周率
console.log(Math.max(1, 99, 3)); //9 一个方法 求最大值
//如果给定的参数中至少有一个参数无法被转换成数字,则会返回 NaN。
console.log(Math.max(1, 99, 'pink老师')); //NaN
//如果没有参数,则结果为 - Infinity
console.log(Math.max()); //-Infinity
案例1:利用对象封装自己的数学对象,里面有最大值、最小值、PI
//利用对象封装自己的数学对象,里面有最大值、最小值、PI
var myMath = {
PI: 3.141592653589793,
max: function() {
var maxValue = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > maxValue) {
var temp = arguments[i];
arguments[i] = maxValue;
maxValue = temp;
}
}
return maxValue;
},
min: function() {
var minValue = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] < minValue) {
var temp = arguments[i];
arguments[i] = minValue;
minValue = temp;
}
}
return minValue;
}
};
console.log(myMath.PI);
var a = myMath.max(1, 3, 99, 5);
console.log(a);
var b = myMath.min(1, 3, 99, 5);
console.log(b);
3.2 Math.abs()
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
3.2 Math.floor()
//(1)Math.floor() 向下取整 对于一切数都往最小了的取
console.log(Math.floor(1.1)); //1
console.log(Math.floor(1.5)); //1
console.log(Math.floor(1.9)); //1
console.log(Math.floor(-1.1));//-2
console.log(Math.floor(-1.5));//-2
console.log(Math.floor(-1.9));//-2
3.3 Math.ceil()
//(2)Math.ceil() 向上取整 对于一切数都往最大了的取
console.log(Math.ceil(1.1)); //2
console.log(Math.ceil(1.5)); //2
console.log(Math.ceil(1.9)); //2
console.log(Math.ceil(-1.1)); //-1
console.log(Math.ceil(-1.5)); //-1
console.log(Math.ceil(-1.9)); //-1
3.4 Math.round()
//(3)Math.round() 四舍五入 对于一个数距离取距离起最近的整数,对于.5往大了取
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
console.log(Math.round(-1.9)); //-2
3.5 随机数方法random() 重要
//1.Math对象随机方法 random() 返回一个随机小数x 0<=x<1;
//2.这个方法里面不跟参数
console.log(Math.random());
//4.若想得到两个数之间的随机整数 并且包含这两个数
//Math.floor(Math.random * (max - min + 1)) + min;
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1, 10));
//5.随机点名
var arr = ['apple', 'banana', 'orange', 'pink', 'blue'];
console.log(arr[getRandom(0, 4)]);
案例:猜数字游戏
随机生成一个1~10之间的数,并让用户输入一个数字
- 如果用户输入的数字大于该数字则继续猜
- 如果用户输入的数字小于该数字则继续猜
- 如果用户输入的数字等于该数字则结束程序
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var randNum = getRandom(1, 10);
while (true) {
var num = prompt('请输入一个数字');
if (num > randNum) {
alert('输入的数字太大啦,继续猜吧!');
} else if (num < randNum) {
alert('输入的数字太小啦,继续猜吧!');
} else {
alert('输入正确,程序结束');
break;
}
}
作业:要求用户输入1~50之间的一个数字,但是只要10次猜的机会
//要求用户输入1~50之间的一个数字,但是只要10次猜的机会
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var randNum = getRandom(1, 50);
for (var i = 10; i > 0; i--) {
var num = prompt('请输入1~50之间的一个数');
if (num > randNum) {
alert('太大啦,继续猜吧!你还有' + (i - 1) + '次机会');
} else if (num < randNum) {
alert('太小啦,继续猜吧!你还有' + (i - 1) + '次机会');
} else {
alert('答案正确!');
break;
}
}
4. 日期对象
4.1日期对象的使用
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date
//回忆
var arr = new Array(); //创建一个数组对象
console.log(arr); //[]
console.log(typeof arr); //object
var obj = new Object(); //创建一个对象实例
console.log(obj); //{}
console.log(typeof obj); //object
//Date() 日期对象 也是一个构造函数 必须用new来创建我们的日期对象
//1. Date()的使用 如果没有提供参数,那么新创建的Date对象表示实例化时刻的日期和时间。
var date = new Date();
console.log(date); //Mon Dec 16 2019 14:38:53 GMT+0800 (中国标准时间)
//2. 常用的写法
//写法1:数字型2019,10,01,或者是字符串型'2019-10-1 8:8:8'
var date1 = new Date(2019, 10, 1);
console.log(date1); //Fri Nov 01 2019 00:00:00 GMT+0800 (中国标准时间) 注意这里返回的是11月不是10月(后面再解释)
var date2 = new Date('2019-10-1 8:8:8');
console.log(date2); //Tue Oct 01 2019 08:08:08 GMT+0800 (中国标准时间)
var date3 = new Date('2019/10/1/8:8:8');
console.log(date3); //Tue Oct 01 2019 08:08:08 GMT+0800 (中国标准时间)
4.2日期格式化
上述方法得到的日期格式对用户不太友好,我们想要2019-8-8 8:8:8格式的日期该怎么办呢?

//格式化日期 年 月 日
var date = new Date();
console.log(date.getFullYear()); //2019 返回当前的年
console.log(date.getMonth()); //11 返回当前的月份 返回的月份比当前的月份少1 因为date.getMonth()获得当月(0-11)
//所以要记得月份加1
console.log(date.getMonth() + 1); //12
console.log(date.getDate()); //16 返回当前的日
console.log(date.getDay()); //1 返回当前星期几 星期天~星期6依次对应0123456
//现在想写一个2019年12月16日星期三
var date = new Date(); //必须先实例化
var year = date.getFullYear();
var month = date.getMonth();
var dates = date.getDate();
var arr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var day = date.getDay();
console.log('今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day]); //今天是:2019年11月16日 星期一
var date = new Date();//获取当前的时间所以不要传参数进去
//格式化 时 分 秒
console.log(date.getHours()); //18 得到当前的小时
console.log(date.getMinutes()); //35 得到当前的分钟
console.log(date.getSeconds()); //53 得到当前的秒数
//要求封装一个函数 返回当前的时分秒 格式:时:分:秒
function reTime() {
var date = new Date();
//格式化 时 分 秒
var hour = date.getHours(); //18 得到当前的小时
hour = hour < 10 ? '0' + hour : hour;
var min = date.getMinutes(); //35 得到当前的分钟
min = min < 10 ? '0' + min : min;
var sec = date.getSeconds(); //53 得到当前的秒数
sec = sec < 10 ? '0' + sec : sec;
return hour + ':' + min + ':' + sec;
}
console.log(reTime()); //18:49:07
4.3获取日期总的毫秒数
- 获取Date总的毫秒数(过去到现在总的毫秒数)
- Date对象是基于1970年1月1日(世界标准时间)起的毫秒数,经常利用总的毫秒数来计算时间,因为它更精确。
//获得Date总的毫秒数(时间戳)
//1. 通过valueOf()或者getTime()
var date = new Date();
console.log(date.valueOf()); //1576493997344
console.log(date.getTime()); //1576494010514
//2.简单写法(最常用的写法)
var date1 = +new Date(); //+new Date();返回的就是总的毫秒数
console.log(date1); //1576494090710
//3. H5新增,获得总的毫秒数 低版本的浏览器可能不兼容
console.log(Date.now()); //1576494168472
//毫秒数是永远不重复的
4.4案例:倒计时(重点案例)
//倒计时案例
//用时间点a的毫秒数减去时间点b的毫秒数,
//再将其转换为月日年时分秒 转换公式如下
//d天=parseInt(总秒数/60/60/24);
//h小时=parseInt(总秒数/60/60%24);
//m分钟=parseInt(总秒数/60%60);
//s秒=parseInt(总秒数%60);
//注意:1s=1000ms
function countDown(time) {
var nowTime = +new Date(); //返回当前时间总的毫秒数
var inputTime = +new Date(time); //返回用户输入时间总的毫秒数
var times = (inputTime - nowTime) / 1000; //times是剩余时间的总的秒数
var d = parseInt(times / 60 / 60 / 24);
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24);
h = h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60);
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60);
s = s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown('2019-12-16 20:30:00')); //00天00时37分42秒
JavaScript-----13.内置对象 Math()和Date()的更多相关文章
- 内置对象(Math、Date、String、Array、基本包装类型)
一.内置对象 js中三种对象:内置对象.自定义对象.浏览器对象 实例对象是指通过构造函数创建出来,然后实例化的对象(new关键字) 静态对象是指不需要创建,直接调用的对象,可以在整个JS里调用的公共对 ...
- 【JavaScript】内置对象Math
Math是具有用于数学常数和函数的属性和方法一内置对象.不是函数对象. 描述编辑 不像其他的全局对象,Math不是一个构造函数.所有属性和方法Math都是静态的.你指的是常数pi为Math.PI你调用 ...
- 第一百零八节,JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式
JavaScript,内置对象,Global对象字符串编码解码,Math对象数学公式 学习要点: 1.Global对象 2.Math对象 ECMA-262对内置对象的定义是:"由ECMASc ...
- JavaScript 标准内置对象
JavaScript 标准内置对象或称全局的对象(global objects)不要和 全局对象(global object)混淆.这里说的全局的对象是说在全局作用域里的对象,全局作用域包含了全局对象 ...
- 一、JavaScript概述 二、JavaScript的语法 三、JavaScript的内置对象
一.JavaScript的概述###<1>JavaScript的概念 又称ECMAScript,和java没有任何关系 嵌入在HTML元素中的 被浏览器解释运行的 一种脚本语言. ###& ...
- js内置对象——Math
Math()是JavaScript的内置对象(对于内置对象的理解,会单独写文章说明),包含了很多数学相关的方法: 常用方法: 1 Math.ceil(x) //取最近的最大整数返回 2 Math.fl ...
- JavaScript 标准内置对象Promise使用学习总结
Javascript标准内置对象Promise使用学习总结 by:授客 QQ:1033553122 1. 基础用法 var condition = true; let p = new Prom ...
- JS基础-内置对象【字符串+Date+Math】
JS内置对象[字符串] // charAt() 返回字符 // charCodeAt() 返回字符的unicode编码 var str="hello world"; console ...
- JavaScript内置对象——Math对象
这几天在刷leetcode的时候用到了一些Math对象的知识,故作一下总结~ JavaScript中的Math对象也是一个常见的内置对象,然而与String等其它常见对象不同,Math对象没有构造函数 ...
随机推荐
- Python 如何定义只读属性?【新手必学】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:Daniel2333如果还没学到属性问题,看不懂不怪你,可以先去小编的P ...
- 【JS】403- JavaScript 工具函数大全(新)
前言 一线大厂笔试题灵感来源 目录: 第一部分:数组 第二部分:函数 第三部分:字符串 第四部分:对象 第五部分:数字 第六部分:浏览器操作及其它 筛选自以下两篇文章: <127 Helpful ...
- kubernetes-单机实验(入门)
一.安装kubernetes 实验环境: centos7.0(建议使用7.5版本) 实验机器IP:192.168.1.4 安装方式:yum安装 需求环境:Tomcat+Mysql 1:关闭防火 ...
- VMware Fushion解决:与vmmon模块的版本不匹配: 需要385.0,现有330.0。
可以按下列步骤解决: 1. 退出VMware fusion2. 打开[终端]3. 执行命令:sudo rm -rf /System/Library/Extensions/vmmon.kext ,根据提 ...
- mybatis初级映射
一 前言 系统学习知识请认准知识追寻者(同公众号),错过作者,你有可能要走好多弯路 经过第一篇的入门文章,小白们都对mybatis的搭建流程应该都很熟悉,这篇文章主讲的是如何使用mybatis实现数据 ...
- 解决苹果mac远程桌面无VDI客户端
解决苹果mac远程桌面云aDesk无VDI客户端 因集团办公工作需要使用桌面云aDesk 在深信服官网并未有mac 的VDI Client客户端 mac电脑可通过Google浏览器访问VDI的服务器地 ...
- web前端分享JavaScript到底是什么?特点有哪些?
web前端分享JavaScript到底是什么?特点有哪些?这也是成为web前端工程师必学的内容.今天为大家分享了这篇关于JavaScript的文章,我们一起来看看. 一.JavaScript是什么? ...
- netcore 创建腾讯云私有镜像 发布到docker 实战
上一篇博客写的 netcoer上传到docker ,编译 并发布,传送门:FineUICore基础版部署到docker实战 这是一种笨方法,理想的方法是,在本地编译成镜像,然后推送到镜像仓库,服务器的 ...
- <深度学习>Tensorflow遇到的坑之一
AttributeError: module 'tensorflow' has no attribute 'random_normal' AttributeError: module 'tensorf ...
- 使用.NET Core 构建现代化的桌面应用
我们今天要聊的内容主要桌面开发四个方面:Windows平台..NET Core 3 平台上的WPF,Winform, 应用打包解决方案 MSIX 和 XAML 群岛访问原来UWP的控件,让我们的应用程 ...