JavaScript基础——内置对象(Math对象和Date对象)

  • A+
所属分类:Web前端
摘要

学习方法:Math不是一个构造函数,里面提供的是静态成员Math.PIMath.PI表示一个圆的周长与直径的比例,约为 3.14159


内置对象

  • 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的情况下)。

案例

  1. 求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)); 
  1. 随机生成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()); 
  1. 模拟实现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);