JavaScript常⽤内置对象
之前在讲⾯
⾯向对象的时候都是我们⾃⼰去创建对象
,其实在
JavaScript
的内部有很多内置对象,
系统提供的内置对象
是可以直接使⽤的,这些对象我们叫JS
常⽤对象
Math对象
它是⼀个全局的数学对象,是⼀个系统已经定义好的对象,不需要我们通过
new
的关键来构造就可以直接使⽤,它主要⽤于我们的数据运算
这个数学对象⾥⾯主要包含了
2
个东⻄,⼀个是属性【常数】,⼀个是⽅法
常数
常数数学或⾃然界当中⼀些固定的数,如
π
它就是⼀个常数
Math.PI
圆周率,约等于
3.14
Math.E
⾃然对数的底数,约等于
2.718
Math.LN10
10
的⾃然对数值,约等于
2.302
Math.LN2
2
的⾃然对数值,约等于
0.693
Math.SQRT1_2
0.5
的平⽅根
Math.SQRT2
2
的平⽅根
上⾯这些东⻄都不⽤去记,⽤的时候拿出来看⼀下就⾏了,它是固定的不会变
方法——⽅法才是数学对象的重点
1.
绝对值
Math.abs()
⽅法
Math.abs(3); //3
Math.abs(-3); //3
2.
四舍五⼊
Math.round()
⽅法
Math.round(3.4); //3
Math.round(9.8); //10
Math.round(-10.2); //-10
Math.round(-10.8); //-11;
Math.round(-10.5); //-10
注意
:上⾯的
Math.round()
可以实现整数位的四舍五⼊,但是如果想多保留⼏位⼩数,怎么办
呢?
var a = 3.1415926;
//我希望保存3位⼩数以后再四舍五⼊,怎么办?
var b = Math.round(a * 1000) / 1000;
console.log(b);
3. Math.floor()
向下取整,返回这⼩于或等于这个数的最⼤整数——就是把数字变小了
Math.floor(88.2); //88
Math.floor(24.7); //24
Math.floor(23); //23
Math.floor(-12.4); //-13
4. Math.ceil() 向上取整 ,返回⼤于或等于这个数最⼩整数——就是把数字变大了
Math.ceil(11.1); //12
Math.ceil(22.7); //23
Math.ceil(34); //34
Math.ceil(-34.5); //-34
5. Math.pow(x,y)
函数。求取
x
的
y
次⽅的结果
Math.pow(100,3); //1000000
Math.pow(2,8); //256
6. Math.max()
⽅法⽤于求⼀系列数当中的最⼤值
Math.max(111,23,120); //120;
通过这个⽅法来求取了数组当中的最⼤值 ——如下:
var arr = [100,87,65,34,209];
var max = Math.max.apply(Math,arr); //209
7. Math.min()
⽅法⽤于求⼀系列数当中最⼩值
Math.min(111,23,120); //23
var arr = [100,87,65,34,209];
var min = Math.min.apply(Math,arr); //34
8. Math.sqrt(x)
求
x
的平⽅根
Math.sqrt(9); //3
9. Math.random()
获取
0~1
之间的随机数
Math.random(); //0.5808373583762474
通过这个方法我们可以取到0~100或更大之间的随机数
var x = ~~(Math.random() * 100)
当然也可以用其他运算符来缩小随机数范围(5~10):
var x = ~~((Math.random() * 5)+5)
如果想获取某⼀个范围的随机为整数,我们可以使⽤下⾯的公式:
var x = ~~(Math.random() * 范围值); //最后⽣成的随机数不包含这个范围值
10. Math.sin()
⽅法,求⼀个弧度的正弦值
11. Math.cos()
⽅法,求⼀个弧度的余弦值
12. Math.tan()
⽅法,求⼀个弧度的正切值
延时调⽤与循环调⽤
延时调⽤
延时调⽤相当于⼀次性的定时器,定时器可以把它理解为闹钟 ,我现在定义了⼀个闹钟,这个闹钟的时间到了以后就会通知我来做⼀些事情
在我们以前编程的时候,我们写的代码都会⽴即执⾏如下:
d1.getTime(); //1649217600000
d2.getTime(); //1660795200000
var d1Time = d1.getTime(); //时间戳
var d2Time = d2.getTime(); //时间戳
if (d1Time < d2Time) {
console.log("d1在d2之前");
}else {
console.log("d1在d2之后");
}
//要计算两个时间相隔多久
var x = d2Time - d1Time; //这样会得到⼀个时间的差值,单位是毫秒
//两个时间相差多少天
console.log(x/1000/60/60/24);
d1.valueOf() === d1.getTime();function sayHello(){
console.log("你好啊")
}
sayHello(); //这个代码会⽴即执⾏
现在我们希望
sayHello
这个代码不要⽴即执⾏,应该是等⼀段时间以后再执⾏,这⼀种情况我们就 叫
延时调⽤
var timeId = setTimeout(sayHello, 5000);
// 上⾯的代码就设置了⼀个定时器
// 第⼀个参数:代表时间到了以后要⼲什么事情——也就是要执行的方法
// 第⼆个参数:代表设置延时的时间,以毫秒为单位
// 这个⽅法会返回定时器的编号 ,后期我们可以通过这个编号来取消这个定时器
使用延时调用的函数:
function sayHello(userName, age) {
console.log("你好啊,我叫" + userName + ",我的年龄是:" + age);
}
var timeId = setTimeout(sayHello, 5000, "孙悟空",18);
//当我们的函数⾥⾯需要参数的时候,我们就把原来函数的参数写在`setTimeout`的后⾯就可以了
通常会将上⾯的回调函数
sayHello
写成⼀个匿名函数(更加方便快捷):
var timeId = setTimeout(function (userName, age) {
console.log("你好啊,我叫" + userName + ",我的年龄是:" + age);
}, 5000, "孙悟空", 18);
取消延时调⽤——clearTimeout(变量名)
function sayHello(userName, age) {
console.log("你好啊,我叫" + userName + ",我的年龄是:" + age);
}
var timeId = setTimeout(sayHello, 5000, "孙悟空", 18);
//clearTimeout(timeId); //定时器就取消了
循环调⽤
循环调⽤就是循环定时器,它会每隔⼀段时间就会⾃已执⾏⼀次(可以理解为⼿机上⾯的⼀个起床
闹钟 ,它每天早上
7
:
30
起床,隔
24
⼩时执⾏⼀次)
它的语法与上⾯的延时调⽤的语⼀致
var 定时器编号 = setInterval(时间到了以后要做的事,间隔的时间)
function sayHello() {
console.log("你好啊,现在时间是:" + new Date().toLocaleString());
}
var timeId = setInterval(sayHello, 1000);
同理 setInterval 也可以接收参数
function sayHello(userName) {
console.log("你好啊,我叫" + userName + ",现在时间是:" + new
Date().toLocaleString());
}
var timeId = setInterval(sayHello, 1000, "帅⽓的标哥哥");
取消循环调⽤——clearTimeout(变量名)
function sayHello(userName, age) {
console.log("你好啊,我叫" + userName + ",我的年龄是:" + age);
}
var timeId = setTimeout(sayHello, 5000, "标哥哥", 18);
//clearTimeout(timeId); //定时器就取消了
var 定时器编号 = setInterval(时间到了以后要做的事,间隔的时间);
function sayHello() {
console.log("你好啊,现在时间是:" + new Date().toLocaleString());
}
var timeId = setInterval(sayHello, 1000)