- A+
所属分类:Web前端
内置对象
- JavaScript中的对象有三种:自定义对象、 内置对象、浏览器对象
- ECMAScript中的对象:自定义对象、内置对象
- 内置对象:Math、Array、Date、... ...
学习方法:
- 最常用的属性和方法
- 查文档:MDN
Math对象
Math不是一个构造函数,里面提供的是静态成员
属性
Math.PI
Math.PI
表示一个圆的周长与直径的比例,约为 3.14159
console.log(Math.PI); // 3.141592653589793 // 计算圆的面积 function getCircleArea(radius) { return 2 * Math.PI * radius; } var radius = 2; console.log(getCircleArea(radius)); // 12.566370614359172
方法
Math.ceil()
Math.ceil()
函数返回大于或等于一个给定数字的最小整数。
console.log(Math.ceil(0.95)); // 1 console.log(Math.ceil(4)); // 4 console.log(Math.ceil(7.005)); // 8 console.log(Math.ceil(-7.005)) // -7
Math.floor()
Math.floor()
返回小于或等于一个给定数字的最大整数
console.log(Math.floor(45.95)); // 45 console.log(Math.floor(45.05)); // 45 console.log(Math.floor(4)); // 4 console.log(Math.floor(-45.05)); // -46 console.log(Math.floor(-45.95)); // -46
Math.max()
Math.max()
函数返回一组数中最大值
console.log(Math.max(1, 5, 8, 7, 6, 8, 5)); // 8
Math.min()
Math.max()
函数返回一组数中最小值
console.log(Math.max(1, 5, 8, 7, 6, 8, 5)); // 1
Math.pow()
Math.pow()
函数返回基数(base
)的指数(exponent
)次幂。
// 语法 Math.pow(base, exponent) // base基数 exponent指数 // 案例 console.log(Math.pow(2, 2)) // 4
Math.random()
Math.random()
函数返回一个从0到1的随机浮点数,包括0,不包括1
function getRandom() { return Math.random(); } var num1 = getRandom(); // 随机浮点数
Math.round()
Math.round()
函数返回一个数字四舍五入后最接近的整数。
console.log(Math.round(20.49)); // 20 console.log(Math.round(20.5)); // 21 console.log(Math.round(-20.49)); // -20 console.log(Math.round(-20.5)); // -20 console.log(Math.round(-20.51)); // -21
注意:
与很多其他语言中的round()
函数不同,Math.round()
并不总是舍入到远离0的方向(尤其是在负数的小数部分恰好等于0.5的情况下)。
案例
- 求10-20之间的随机整数. [10, 20]
function getRandom(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1) + min); } console.log(getRandom(10, 20));
- 随机生成RGB颜色
function getRGBValue() { var RValue = Math.floor(Math.random() * (255 + 1)); var GValue = Math.floor(Math.random() * (255 + 1)); var BValue = Math.floor(Math.random() * (255 + 1)); var RGBValue = "RGB" + "(" + RValue + "," + GValue + "," + BValue + ")"; return RGBValue; } console.log(getRGBValue());
- 模拟实现
Math.max()
/Math.min()
var MyMath = { max: function () { var max = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (max < arguments[i]) { max = arguments[i]; } } return max; }, min: function () { var min= arguments[0]; for (var i = 1; i < arguments.length; i++) { if (min > arguments[i]) { min = arguments[i]; } } return min; } } console.log(MyMath.max(1,5,2,5,45,24,8,4)); // 45 console.log(MyMath.min(1,5,2,5,45,24,8,4)); // 1
Date对象
MDN文档链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date
Date是一个构造函数,首先要通过 new Date() 来创建日期示例(对象),实例成员
var d = new Date() // 直接打印 d 是一个 GMT 格林威治时间 世界标准时间 GMT+0800(中国标准时间) console.log(d); // Wed Jul 07 2021 11:25:01 GMT+0800 (中国标准时间) // 打印 d 的 valueOf() 是距离1970-1-1相差的毫秒数,如果在1970年以前,打印的是负数值 console.log(d.valueOf()); // 1625628301304
- 格林威治时间一般指世界时间
- 北京时差:现在格林威治时间比北京时间晚8小时
Date构造函数的四种用法
// 空构造函数,获取的是当前时间对象 new Date(); // 构造函数中传入毫秒值 new Date(value); // 构造函数中传入日期形式的字符串(不建议使用) new Date(dateString); // 构造函数中传入日期与时间的每一个成员(至少提供年和月两个成员) , 月份是从0开始 new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
获取日期对象的毫秒值
从1970年1月1日0时0分0秒(UTC,即协调世界时)到该日期对象所代表时间的毫秒数。
// 1. valueOf()方法,该方法通常在 JavaScript 内部被调用,一般不用在代码中显式调用 var d = new Date(); console.log(d.valueOf()); // 2. getTime()方法,这个方法的功能和 valueOf() 方法一样 var d = new Date(); console.log(d.getTime()); // 3. Date.now(),Date的静态成员 var d = Date.now(); console.log(d); // 4. 使用运算符“+”取正的方法获取对象毫秒值 var d = + new Date(); console.log(d);
Date对象的常用方法
隐式调用方法
var d = new Date(); // 1. toString(),转换成字符串 congsole.log(d.toString()) // 2. valueOf(),获取毫秒值 congsole.log(d.valueOf())
日期格式化方法
下面格式化日期的方法,在不同浏览器可能表现不一致,一般不用
var d = new Date(); // 1. toDateString(),转换成美式英语日期部分字符串 congsole.log(d.toDateString()) // 2. toLocaleDateString(),转换成本地日期部分字符串 congsole.log(d.toLocaleDateString()) // 3. toLocaleTimeString(), 转换成本地时间部分字符串 congsole.log(d.toLocaleTimeString())
获取日期指定部分
var d = new Date(); // 1. getTime(),返回毫秒数,和valueOf()结果一样 congsole.log(d.getTime()) // 2. getMilliseconds(),返回毫秒数 congsole.log(d.getMilliseconds()) // 3. getseconds(), 返回秒数,0-59 congsole.log(d.getseconds()) // 4. getMinutes(), 返回分钟数,0-59 congsole.log(d.getMinutes()) // 5. getHours(), 返回小时数,0-23 congsole.log(d.getHours()) // 6. getDay(),返回星期,0代表周日,6代表周六 // 7. getDate(), 返回天数,1-31 congsole.log(d.getDate()) // 8. getMonth(), 返回月数,0-11,0代表1月份,11代表12月份 congsole.log(d.getMonth()) // 9. getFullYear(), 返回4位数年份 congsole.log(d.getFullYear())
格式化日期案例
function formatDate(date) { if (!(date instanceof Date)) { console.error("date不是日期对象") return; } var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); month = month > 10 ? month : "0" + month; day = day > 10 ? day : "0" + day; hours = hours > 10 ? hours : "0" + hours; minutes = minutes > 10 ? minutes : "0" + minutes; seconds = seconds > 10 ? seconds : "0" + seconds; return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; } var d = new Date(); var currentTime = formatDate(d); console.log(currentTime);
计算日期差
案例:计算时间差,返回相差的天/时/分/秒
function fn(start, end) { var interval = d2 - d1; interval /= 1000; var day = Math.round(interval / 60 / 60 / 24); var hours = Math.round(interval / 60 / 60 % 24); var minutes = Math.round(interval / 60 % 60); var seconds = Math.round(interval % 60); return { day:day, hours:hours, minutes:minutes, seconds:seconds, } } var d1 = new Date(); var d2 = new Date(2021, 6, 8); var intervalTime = fn(d1, d2); console.log(intervalTime);