Math
Math是JS中的一个内置对象(注,它不是构造函数 千万不能 new Math())
它提供了许多的数学方法。 比如: 获取一个随机数、 获取一个数的绝对值、 向上取整、 向下取整等
方法
- random() 用于获取0~1之间的随机数 包含0 不包含1
- abs(num) 用于获取参数的绝对值
- num 数字
- floor(num) 用于获取num的向下取整数值
- num 数字
- ceil(num) 用于获取num的向上取整数值
- num 数字
- round(num) 用于获取num的四舍五入数值
- num 数字
- pow(x, y) 用于获取x的y次方
- x 底数
- y 指数
- max(a, b, c, …) 用于获取参数列表中最大的数值
- min(a, b, c, …) 用于获取参数列表中最小的数值
- sqrt(num) 获取num的平方根
Date
Date是JS中提供的用于日期操作的构造函数
方法
-
getFullYear 获取年
-
getMonth 获取月
- 月从0开始 0表示1月 1表示2月… 11表示12月
-
getDate 获取日期 1 ~ 31
-
getDay 获取星期
- 星期天是0 1~6分别表示周一到周六
-
getHours 获取小时 0~23
-
getMinutes 获取分钟 0 ~ 59
-
getSeconds 获取秒 0 ~ 59
-
getMilliSeconds 获取毫秒 0 ~ 999
-
getTime 获取该日期到1970年1月1日8点0分0秒的时间戳毫秒值
-
setFullYear 设置年
-
setMonth 设置月
- 月从0开始 0表示1月 1表示2月… 11表示12月
-
setDate 设置日期
-
setHours 设置小时
-
setMinutes 设置分钟
-
setSeconds 设置秒
-
setMilliSeconds 设置毫秒值
-
setTime 设置毫秒值
call和apply
call
- 执行原函数
function fun() {
console.log(1);
}
var obj = {name:'zhangsan'};
fun(); // window
fun.call(); // 1
- 改变函数中的this
function fun() {
console.log(this);
}
var obj = {name:'zhangsan'};
fun(); // window
fun.call(obj); // obj
- 传递参数
- 第一个参数 是原函数中新this
- 第二个参数 是原函数第一个参数
- 第三个参数 是原函数第二个参数
- 第四个参数 是原函数第三个参数
- …
// 函数中的this
function fun(a, b) {
console.log(this);
return a + b;
}
var obj = {name:'zhangsan'};
// 第一个办法: call
console.log(fun(1, 2)); // 3
console.log(fun.call(obj, 2, 3)); // 5
apply
- 执行原函数
function fun() {
console.log(1);
}
var obj = {name:'zhangsan'};
fun(); // window
fun.apply(); // 1
- 改变函数中的this
function fun() {
console.log(this);
}
var obj = {name:'zhangsan'};
fun(); // window
fun.apply(obj); // obj
- 传递参数
- apply只接受两个参数
- 1 是原函数中新this
- 2 是原函数所接收的实参列表数组
- 数组的第0项 是原函数所需的第1个参数
- 数组的第1项 是原函数所需的第2个参数
- 数组的第2项 是原函数所需的第3个参数
- 数组的第3项 是原函数所需的第4个参数
- …
// 函数中的this
function fun(a, b) {
console.log(this);
return a + b;
}
var obj = {name:'zhangsan'};
// 第一个办法: call
console.log(fun(1, 2)); // 3
console.log(fun.apply(obj, [2, 3])); // 5
// console.log (false-1); //-1
// var a =1;
// function a2(){
// console.log(a); //undefined 由于a会变量提升
// var a =2;
// console.log(a); //2
// }
// a2();
#案例
<script>
// 请实现一个倒计时功能 截至日期为 2019年9月23日 15:40:00
// 获取该日期
var targetDate = new Date("2019-09-23 15:40:00");
// 获取当前日期
var nowDate = new Date();
function getDateDistance(date1, date2) {
// getTime获取的是当前日期到1970-1-1 00:00:00 的毫秒值
var time1 = date1.getTime();
var time2 = date2.getTime();
var distance = Math.abs(date1 - date2);
var seconds = distance / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
return parseInt(days) + "天" + parseInt(hours % 24) + "小时" + parseInt(minutes % 60) + "分" + parseInt(seconds % 60) + "秒";
}
document.body.innerHTML = "据2019年9月23日 15:40:00还有" + getDateDistance(nowDate, targetDate);
setInterval(function() {
document.body.innerHTML = "据2019年9月23日 15:40:00还有" + getDateDistance(new Date(), targetDate);
}, 1000);
</script>
<script>
// 定义一个函数 该函数负责计算相差的天数
function getDateDistance(date1, date2) {
// getTime获取的是当前日期到1970-1-1 00:00:00 的毫秒值
var time1 = date1.getTime();
console.log(time1);
var time2 = date2.getTime();
console.log(time2);
var distance = Math.abs(date1 - date2);
// 开始计算
console.log(distance);
// 毫秒转秒
var seconds = distance / 1000;
console.log(seconds);
// 秒转分钟
var minutes = seconds / 60;
console.log(minutes);
// 分钟转小时
var hours = minutes / 60;
console.log(hours);
// 小时转天
var days = hours / 24;
console.log(days);
return days;
}
// 定义日期1
var date = new Date("2016-12-09");
// 定义日期2
var date1 = new Date("2016-12-10");
getDateDistance(date, date1);
</script>