本篇博客介绍一下Date对象、Math工具类的基本使用,包装类的基本概念。
Date对象
在JS中使用Date对象来表示一个时间。
创建Date对象
方式一:
// 创建一个时间对象
var date = new Date();
alert("date: " + date);
方式二:
var d1 = new Date("11/11/2019");
document.write("d1: " + d1 + "<br />");
var d2 = new Date("11/11/2019 11:11:11");
document.write("d2: " + d2 + "<br />");
注意时间格式:"月/日/年 时:分:秒"
。
常用方法
getDate()
获取当前Date对象是几号。
var date = new Date();
document.write("date: " + date + "<br />");
document.write("date.getDate(): " + date.getDate() + "<br />");
getDay()
获取当前Date对象是周几。
var date = new Date();
document.write("date: " + date + "<br />");
document.write("date.getDay(): " + date.getDay() + "<br />");
注意:getDay()会返回一个0~6的数字,0表示周日。
getMonth
获取当前Date对象的月份。
var date = new Date();
document.write("date: " + date + "<br />");
document.write("date.getMonth(): " + date.getMonth() + "<br />");
注意:getMonth()会返回一个0~11的值,0表示1月。
getFullYear()
获取当前Date对象的年份。
var date = new Date();
document.write("date: " + date + "<br />");
document.write("date.getFullYear(): " + date.getFullYear() + "<br />");
getTime()
获取当前Date对象的时间戳。时间戳指的是从格林威治标准时间的1970年1月1日0时0分0秒到当前时间的毫秒数。
var date = new Date();
document.write("date: " + date + "<br />");
document.write("date.getTime(): " + date.getTime() + "<br />");
注意:时间戳是以格林威治标准时间的1970年1月1日0时0分0秒为开始。
var date = new Date("1/1/1970 0:0:0");
document.write("date: " + date + "<br />");
document.write("date.getTime(): " + date.getTime() + "<br />");
可以看到这里的时间戳并不是0,因为我们输入的是1970年1月1日0时0分0秒是中国时间,而不是格林威治时间。
now()
获取当前时间的时间戳。
var date = new Date();
document.write("date: " + date + "<br />");
document.write("date.getTime(): " + date.getTime() + "<br />");
document.write("Date.now(): " + Date.now() + "<br />");
Math工具类
Math和其它对象不同,它不是一个构造函数,它属于一个工具类。使用它不需要创建对象,它里面封装了数学运算相关的属性和方法。
常用属性和方法
PI
Math中封装了PI属性,表示圆周率。
alert("Math.PI: " + Math.PI);
abs()
求一个数的绝对值。
document.write("Math.abs(-1): " + Math.abs(-1) + "<br />");
document.write("Math.abs(0): " + Math.abs(0) + "<br />");
document.write("Math.abs(1): " + Math.abs(1) + "<br />");
ceil()
上舍入,向上取整。
document.write("Math.ceil(1.1): " + Math.ceil(1.1) + "<br />");
document.write("Math.ceil(1.9): " + Math.ceil(1.9) + "<br />");
floor()
下舍入,向下取整。
document.write("Math.floor(1.1): " + Math.floor(1.1) + "<br />");
document.write("Math.floor(1.9): " + Math.floor(1.9) + "<br />");
round()
四舍五入。
document.write("Math.round(1.1): " + Math.round(1.1) + "<br />");
document.write("Math.round(1.9): " + Math.round(1.9) + "<br />");
pow()
求幂:pow(x, y);
为x的y次幂。
document.write("Math.pow(2, 3)" + Math.pow(2, 3) + "<br />");
sqrt()
求算数平方根。
document.write("Math.sqrt(4): " + Math.sqrt(4) + "<br />");
random()
生成一个0~1之间的随机数,不包括0和1,即(0, 1)。
for (var i = 0; i < 10; ++i) {
document.write("Math.random(): " + Math.random() + "<br />");
}
如果想要生成[x, y]的随机数,公式如下:Math.round(Math.random() * (y - x) + x);
// 生成10个[2, 8]的随机数
for (var i = 0; i < 10; ++i) {
document.write(
"Math.round(Math.random() * (8 - 2) + 2): " +
Math.round(Math.random() * (8 - 2) + 2) +
"<br />"
);
包装类
我们知道JavaScript中数据类型分为两类:基本数据类型和引用数据类型。
- 基本数据类型有:String、Number、Boolean、Null和Undefined。
- 引用数据类型:Object。
在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型转换为引用数据类型。
String()
:将String类型转换为String对象;Number()
:将Number类型转换为Number对象;Boolean()
:将Boolean类型转换为Boolean对象。
我们来看一个简单的演示:
var str = "hello, world!";
document.write("typeof str: " + typeof str + "<br />");
str = new String(str);
document.write("typeof str: " + typeof str + "<br />");
注意:在实际应用中不会使用基本数据类型的对象。基本数据类型的对象是给浏览器自己用的,用来做一些隐式类型转换。
我们来看一段代码:
var num = 12;
// num是基本数据类型,是没有方法的。
// 这里是先将num转为Number类型的对象,然后调用其内部的toString()方法转为String类型对象
// 最后将String类型对象转为String类型
num = num.toString();
document.write("num: " + num + "<br />");
document.write("typeof num: " + typeof num + "<br />");
方法和属性只能添加给对象,不能添加给基本数据类型。当我们对一些基本数据类型的值去调用属性和方法时,浏览器会临时使用包装类将其转换为对象,然后再调用对象的属性和方法。调用完以后,再将其转换会基本数据类型。