内置对象
JavaScript中的对象分为3种:内置对象、浏览器对象、自定义对象
内置对象:就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本二必要的功能。
JavaScript 提供多个内置对象:Math/Array/Number/String/Boolean...
对象只是带有属性和方法的特殊数据类型。
学习一个内置对象的使用,只要学会其常用的成员的使用(通过查文档学习)
可以通过MDN/W3C来查询
内置对象的方法很多,我们只需要知道内置对象提供的常用方法,使用的时候查询文档。
MDN
Mozilla 开发者网络(MDN)提供有关开放网络技术(Open Web)的信息,包括 HTML、CSS 和万维网及 HTML5 应用的 API。
如何学习一个方法?
-
方法的功能
-
参数的意义和类型
-
返回值意义和类型
-
demo进行测试
Math对象
Math对象不是构造函数,所以我们不需要new 来调用,而是直接使用里面的属性和方法即可,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供
跟数学相关的运算来找Math中的成员(求绝对值,取整)
演示:Math.PI、Math.random()、Math.floor()/Math.ceil()、Math.round()、Math.abs() 、Math.max()
Math.PI // 圆周率
Math.random() // 生成随机数
Math.floor()/Math.ceil() // 向下取整/向上取整
Math.round() // 取整,四舍五入
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值
Math.sin()/Math.cos() // 正弦/余弦
Math.power()/Math.sqrt() // 求指数次幂/求平方根
案例:
<script>
//生成一个20-50的随机数
// Math.random()*(max-min)值最小是0,最大是30,那么Math.random()*(max-min)+min的值就是介于20-50(不包括50)之间
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
console.log(getRandomArbitrary(10,20));
</script>
console.log(Math.round(1.1)); // 1
console.log(Math.round(1.5)); // 2
console.log(Math.round(-1.1)); // -1
console.log(Math.round(-1.5)); //-1 四舍五入 其他数字都是四舍五入,但是 .5 特殊 它往大了取
Date对象
创建 Date
实例用来处理日期和时间。Date 对象基于1970年1月1日(世界标准时间)起的毫秒数。
// 获取当前时间,UTC世界时间,距1970年1月1日(世界标准时间)起的毫秒数
var now = new Date();
console.log(now.valueOf()); // 获取距1970年1月1日(世界标准时间)起的毫秒数
Date构造函数的参数
1. 毫秒数 1498099000356 new Date(1498099000356)
2. 日期格式字符串 '2015-5-1' new Date('2015-5-1')
3. 年、月、日…… new Date(2015, 4, 1) // 月份从0开始
-
获取日期的毫秒形式
// 获得Date总的毫秒数(时间戳) 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数
// 1. 通过 valueOf() getTime()
var date = new Date();
console.log(date.valueOf()); // 就是 我们现在时间 距离1970.1.1 总的毫秒数
console.log(date.getTime());
// 2. 简单的写法 (最常用的写法)
var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
console.log(date1);
// 3. H5 新增的 获得总的毫秒数 存在兼容性问题
console.log(Date.now());
-
日期格式化方法
toString() // 转换成字符串
valueOf() // 获取毫秒值
// 下面格式化日期的方法,在不同浏览器可能表现不一致,一般不用
toDateString()
toTimeString()
toLocaleDateString()
toLocaleTimeString()
-
获取日期指定部分
getTime() // 返回毫秒数和valueOf()结果一样,valueOf()内部调用的getTime()
getMilliseconds()
getSeconds() // 返回0-59
getMinutes() // 返回0-59
getHours() // 返回0-23
getDay() // 返回星期几 0周日 6周6
getDate() // 返回当前月的第几天
getMonth() // 返回月份,***从0开始***
getFullYear() //返回4位的年份 如 2016
案例
-
写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式
function formatDate(d) {
//如果date不是日期对象,返回
if (!date instanceof Date) {
return;
}
var year = d.getFullYear(),
month = d.getMonth() + 1,
date = d.getDate(),
hour = d.getHours(),
minute = d.getMinutes(),
second = d.getSeconds();
month = month < 10 ? '0' + month : month;
date = date < 10 ? '0' + date : date;
hour = hour < 10 ? '0' + hour : hour;
minute = minute < 10 ? '0' + minute:minute;
second = second < 10 ? '0' + second:second;
return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
}
-
计算时间差,返回相差的天/时/分/秒
<script>
// 需求:封装一个函数 计算两个时间直接相差的 天/时/分/秒
function getInterval(start, end) {
var startTime = +new Date(start); // 返回的是用户输入时间总的毫秒数
var endTime = +new Date(end);
var Interval = (endTime - startTime)/1000; // Interval用户输入的两个日期相差的秒数
var d = parseInt(Interval / 60 / 60 / 24); // 计算天数
d = d < 10 ? '0' + d : d;
var h = parseInt(Interval / 60 / 60 % 24); // 计算小时
h = h < 10 ? '0' + h : h;
var m = parseInt(Interval / 60 % 60); // 计算分钟
m = m < 10 ? '0' + m : m;
var s = parseInt(Interval % 60); // 计算秒数
s = s < 10 ? '0' + s : s;
return d+'天'+h+'时'+m+'分'+s+'秒';
}
console.log(getInterval('2019-8-5','2019-8-6 00:05:40'));
</script>