JavaScript对象
一.Math对象
1.Math对象的使用
Math对象用来对数字进行与数字相关的计算,该对象**不是构造函数**,不需要实例化对象,可以直接使用其静态属性和静态方法。
Math对象的常用属性和方法
成员 |
作用 |
PI |
获取圆周率,结果为3.141592653589793 |
abs(x) |
获取x的绝对值,可传入普通数值或是用字符串表示的数值 |
max([value1[value2,…]]) |
获取所有参数中的最大值 |
min([value1[value2,…]]) |
获取所有参数中的最小值 |
pow(base,exponent) |
获取基数(base)的指数(exponent)次幂 |
sqrt(x) |
获取x的平方根 |
ceil(x) |
获取大于或等于x的最小整数,即向上取整 |
floor(x) |
获取小于或等于x的最小整数,即向下取整 |
round(x) |
获取x的四舍五入后的整数值 |
random(x) |
获取大于或等于0.0且小于1.0的随机数 |
示例代码
<script>
Math.PI; //获取圆周率
Math.abs(-2); //获取绝对值 结果:2
Math.abs('-2'); //获取绝对值 自动转化为数字 结果:2
Math.max(1,2,3,4); //获取最大值 结果:4
Math.min(1,2,3,4); //获取最小值 结果:1
Math.pow(2,3); //获取2的3次幂 结果:8
Math.sqrt(9); //获取9的平方根 结果:3
Math.ceil(1.1); //向上取整 结果:2
Math.ceil(1.9); //向上取整 结果:2
Math.floor(1.1); //向下取整 结果:1
Math.floor(1.9); //向下取整 结果:1
Math.round(1.1); //四舍五入 结果:1
Math.round(1.5); //四舍五入 结果:2
Math.round(1.9); //四舍五入 结果:2
Math.round(-1.5); //四舍五入 结果:-1
</script>
2.生成指定范围的随机数
Math.random()用来获取随机数,每次调用该方法返回的结果都不同。因为这个不太常用于是我们借助一些数学公式来转换成任意范围内的随机数
M
a
t
h
.
r
a
n
d
o
m
(
)
∗
(
m
a
x
−
m
i
n
+
1
)
+
m
i
n
Math.random()*(max-min+1)+min
Math.random()∗(max−min+1)+min
表示生成大于或等于min且小于max的随机值
示例代码
<script>
Math.random()*(3-1)+1; // 1 <=返回结果< 3
Math.random()*(20-10)+10; // 10 <=返回结果< 20
Math.random()*(99-88)+88; // 88 <=返回结果< 99
</script>
上述代码返回结果是浮点数,如果要返回整数可通过搭配Math.floor()来实现
示例代码
<script>
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
console.log(getRandom(1,3)); //最小值;1 最大值;3
</script>
公式
M
a
t
h
.
f
l
o
o
r
(
M
a
t
h
.
r
a
n
d
o
m
(
)
∗
(
m
a
x
+
1
)
)
Math.floor(Math.random()*(max+1))
Math.floor(Math.random()∗(max+1))
表示的是1到max之间的随机整数
示例代码
<script>
var arr =['apple','banana','orange','pear'];
//调用前面编写的getRandom()函数获取随机数
console.log(arr[getRandom(0,arr.length-1)])
</script>
3.[案例]猜数字游戏
示例代码
<script>
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
var random = getRandom(1, 10);
while (true) {//死循环,利用第13行的 break 来跳出循环
var num = prompt('猜数字,范围在1~10之间。');
if (num > random) {
alert('你猜大了');
} else if (num < random) {
alert('你猜小了')
} else {
alert('恭喜你,猜对了');
break;
}
}
</script>
二.日期对象
JavaScript中的日期对象用来处理日期和时间
1.日期对象的使用
JavaScript中日期对象需要使用**new Date()**实例化对象才能使用,Date()是日期对象的构造函数
方法示例
<script>
//方式1:没有参数,使用当前系统的当前时间作为对象保存的时间
var datel = new Date();
//输出结果: Sun Apr 16 2023 02:06:24 GMT+0800 (中国标准时间)
console.log(datel);
//方式2:传入年、月、日、时、分、秒(月的范围是0~11,即真实月份﹣1)
var date2 = new Date(2019, 10, 16, 10, 57, 56);
//输出结果: Sat Nov 16201910:57:56 GMT +0800(中国标准时间)
console.log(date2);
//方式3:用字符串表示日期和时间
var date3 = new Date('2019-10-16 10:57:56');
//输出结果:wed oct 16 2019 10:57:56 GMT+0800(中国标准时间)
console.log(date3);
</script>
Date对象的常用get方法
方法 |
作用 |
getFullYear() |
获取表示年份的4位数字,如2020 |
getMonth() |
获取月份,范围0~11(0表示一月,1表示二月,依次类推) |
getDate() |
获取月份中的某一天,范围1~31 |
getDay() |
获取星期,范围0~6(0表示星期日,1表示星期一,依次类推) |
getHours() |
获取小时数,返回0~23 |
getMinutes() |
获取分钟数,范围0~59 |
getSeconds() |
获取秒数,范围0~59 |
getMillisconds() |
获取毫秒数,范围0~999 |
getTime() |
获取从1970-01-01 00:00:00距离Date对象所代表时间的毫秒数 |
Date对象set方法
方法 |
作用 |
setFullYear(value) |
设置年份 |
setMonth(value) |
设置月份 |
setDate(value) |
设置月份中的某一天 |
setHours(value) |
设置小时数 |
setMinutes(value) |
设置分钟数 |
setSeconds(value) |
设置秒数 |
setMilliseconds(value) |
设置毫秒数 |
setTime(value) |
通过从1970-01-01 00:00:00计时的毫秒数来设置时间 |
示例代码 演示Date对象的使用,在控制台中输出
<script>
var date = new Date(); //基于当前日期时间创建Date对象
var year = date.getFullYear();//获取年
var month = date.getMonth();//获取月
var day = date.getDate(); //获取日
//通过数组将星期值转换为字符串
var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
//输出date对象保存的时间,示例:今天是2019年9月16日 星期三
console.log('今天是' + year + '年' + month + '月' + day + '日' + week[date.getDay()]);
</script>
示例代码 将日期对象中的时间转换为指定格式
<script>
//返回当前时间,格式为:时:分:秒,用两位数字表示
function getTime() {
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h : h;
var m = time.getMinutes();
m = m < 10 ? '0' + m : m;
var s = time.getSeconds();
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
console.log(getTime()); //输出结果示例:10:07:56
</script>
2.[案例]统计代码执行时间
1.获取时间戳
<script>
// 方式1:通过日期对象的valueof()或getTime()方法
var date1 = new Date();
// valueOf用于获取对象的原始值
console.log(date1.valueOf()); // 示例结果:1571196996188
console.log(date1.getTime()); // 示例结果:1571196996188
// 方式2:使用“+”运算符转换为数值型
var date2 = + new Date();
console.log(date2); // 示例结果:1571196996190
// 方式3:使用HTML5新增的Date.now()方法
console.log(Date.now()); // 示例结果:1571196996190
</script>
2.通过时间戳来统计代码执行时间
<script>
var timestamp1 = +new Date();
for (var i = 1, str = ''; i <= 90000; i++) {
str += i;
}
var timestamp2 = +new Date();
//示例结果:代码执行时间:37毫秒
console.log('代码执行时间:' + (timestamp2 - timestamp1) + '毫秒');
</script>
3.[案例]倒计时
核心算法是输入的时间减去现在的时间,得出的剩余时间就是要显示的倒计时时间,这需要把时间都转化成时间戳(毫秒数)来进行计算,把得到的毫秒数转换为天数、小时、分数、秒数。
示例代码
<script>
function countDown(time) {
var nowTime = +new Date();
var inputTime = +new Date(time);
var times = (inputTime - nowTime) / 1000;
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 + '秒';
}
//示例结果:200天00时03分56秒
console.log(countDown('2023-11-01 00:00:00'));
</script>
``