一、JavaScript常用对象(内置对象}
javascript中的对象分为三种:自定义对象、内置对象、浏览器对象。
参考文档 MDN 、W3C
1、math对象
Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。
绝对值–Math.abs(x)
几个数最大值–Math.max([x[, y[, …]]])
几个数最小值–Math.min([x[, y[, …]]])
返回一个数的 y 次幂–Math.pow(x, y)
返回四舍五入后的整数–Math.round(x)。针对负数时注意验证
一个数向下取整后的值–Math.floor(x)
一个数向上取整后的值–Math.ceil(x)
返回一个 0 到 1 之间的伪随机数(浮点数)–Math.random()
1-1 取一个0-100的随机数
var a= Math.round(Math.random()*100)
alert(a)
1-2 两数之间的随机整数,包括两个数在内
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
}
使用:a=getRandomIntInclusive(1,10)一到十之间的随机整数
1-3 猜字游戏
猜数字游戏
1、随机生成一个1-10整数;
2、用户去猜;
3、根据用户输入的数字,提示用户是否正确,大、小
4、用户只有5次机会
function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
}
//随机数
var random = getRandomIntInclusive(1, 10)
var i=5
while (1) {
var num = prompt('请输入1-10的整数,你只有10次机会')
if (num > random) {
i--
alert('你猜大了,请重新输入,还有' + i +'次机会')
} else if (num < random) {
i--
alert('你猜小了,请重新输入还有' + i +'次机会')
} else {
alert('你猜对了')
break;
}
}
2、封装自己的math对象
封装自己的对象
var mymath={
PI:3.141592653,
max:function(){
var max=arguments[0];
for(var i;i<arguments.length;i++){
if(arguments[i]>max){
max=arguments[i]
}
return max;
}
}
}
console.log(mymath.PI)
console.log(mymath.max(1,7,2))
3、Date日期对象的使用
创建一个新Date对象的唯一方法是通过new 操作符,例如:let now = new Date();
3-1 获取系统当前事件
var date=new Date();
3-2 创建一个日期对象方法
var today= new Date();
var birth=new Date('2001-10-13 16:12:10');//通常使用这种
var birth2=new Date(2001,10,13)//返回的实际月份大一月
alert(today + birth + birth2)
3-3 格式化日期年月日(重)
var today = new Date();
console.log(today.getFullYear())
console.log(today.getMonth() + 1)
console.log(today.getDate())
console.log(today.getHours())
console.log(today.getMinutes())
console.log(today.getSeconds())
console.log(today.getDay())
var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
var date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate()
+ ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds() + arr[today.getDay()]
alert(date)
3-4获取时间戳(重)
当前时间距1970年1月1日午夜的毫秒数
方法一、alert(Date.parse(today))
alert(Date.parse("2001-10-13 16:30:20"))
获取的时当前时间距离1970年的时间
方法二、date.valueOf()获取
// Date:当前时间距1970年1月1日午夜的毫秒数
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
console.log(date.valueOf()); // 1376838719230
方法三、最简单的获取方式
var today = +new Date();
alert(today)
3-5 倒计时案例
1、核心算法,输入的时间减去现在的时间就是倒计时剩余的时间,但是05分减去当前25分是负的,涉及复杂。
2、通常使用时间戳计算,用户输入的时间的时间戳减去现在的时间戳,得到的时间及倒计时。
3、把剩余时间转换为日、时、分、秒即可。
转换如下:
day=parseInt(总秒数/60/60/24)
hour=parseInt(总秒数/60/60%24)
min=parseInt(总秒数/60%60)
sec=parseInt(总秒数%60)
var time = +new Date('2023-12-23 19:20:21')
function countdown(time) {
var today_time = +new Date();
var cut_time = +new Date(time);
var times = (cut_time - today_time) / 1000;
var day = parseInt(times / 60 / 60 / 24)
var hour = parseInt(times / 60 / 60 % 24)
var min = parseInt(times / 60 % 60)
var sec = parseInt(times % 60)
return day+'天'+hour+'时'+min+'分'+sec+'秒'
}
alert(countdown(time))
4 、数组对象
4-1创建数组的两种方式
4-1-1利用数组字面量
var array=[1,2,3];
console.log(array[0])
4-1-2利用new array()
var array=new array()
4-2检测是否为数组
4-2-1利用instanceof
var arr=[ ];
var obj={ };
console.log(arr instanceof Array)
4-2-2Array.isArray()
用于确定传递的值是否是一个 Array。
Array.isArray([1, 2, 3]);
// true
Array.isArray({foo: 123});
// false
Array.isArray(“foobar”);
4-3 添加元素
4-3-1添加删除push、unshift、indexOf、splice
var arr=new Array(1,2)
//.push 添加数组到最后边
console.log(arr.push(3,4))//出来的时长度
console.log(arr)//这才是添加后的数组,结果是arr=[1,2,3,4]
//.pop删除末尾的元素
arr.pop();
console.log(arr);//这才是删除后的数组,结果是arr=[1,2,3]
//添加元素到头部
arr.unshift(-1,0);
console.log(arr);//结果是arr=[-1,0,1,2,3]
//删除头部的元素
arr.shift();//结果是arr=[0,1,2,3]
console.log(arr);
//找出某个元素在数组中的位置(索引)
var fruit=['apple','banana']
fruit.push('pink')
var pos=fruit.indexOf('banana')//获取该元素的位置数组下标
console.log(pos)
//splice(pos,num)
// 通过索引出来的位置删除某个元素
var a=fruit.splice(1,2)
console.log(a)//a数组是删除的元素集合
console.log(fruit)//此时该数组已经通过索引删除
4-3-2去掉重复的数组元素
思路:创建一个新数组,遍历旧数组之中的元素在新数组中一次查询书否存在;
4-4、数组排序reverse()以及sort()
4-4-1 reverse()
var arr = new Array(1, 2)
//.push 添加数组到最后边
console.log(arr.push(3, 4))//出来的时长度
console.log(arr)//这才是添加后的数组,结果是arr=[1,2,3,4]
//.pop删除末尾的元素
arr.reverse()//反转数组
console.log(arr)
4-4-2 sort()
默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的
arr1 = [5, 2, 9, 1]
arr1.sort();//数组排序
console.log(arr1)
由于它取决于具体实现,因此无法保证排序的时间和空间复杂性。所以会出现以问题
arr1 = [52, 12, 9, 1]
arr1.sort();//数组排序
console.log(arr1)//1,12,52,9
通常以下方法修改
arr1 = [52, 12, 9, 1]
arr1.sort(function compareNumbers(a, b) {
return a - b;
});//数组排序
console.log(arr1)//1,9,12,52
return b - a;//降序排列
5、RegExp对象
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。
计算机可以根据正则表达式,来检查一个字符串是否符合规则,是否含有某些字符,获取将字符串中符合规则的内容提取出来。
使用typeof检查正则对象,会返回object。
5-1 创建对象
var 变量名 =new RegExp('正则表达式’,‘匹配模式’)
- i:忽略大小写
- g:全局匹配模式
- ig:忽略大小写且全局匹配
正则表达式
5-1-1使用对象创建
语法格式:var 变量名 =new RegExp('正则表达式’,‘匹配模式’)
var reg =new RegExp('abc','i');
var str='Abcde'
var result=reg.test(str)
alert(result)
//检查是否含有abc,结果为true
5-1-2使用字面量创建
语法格式:var 变量名 = /正则表达式/匹配模式;
匹配模式:
- i:忽略大小写
- g:全局匹配模式
- m:执行多行匹配
var reg =new RegExp(/e/,'i');
var str='Abcde'
var result=reg.test(str)
alert(result)
//检查是否含有e,结果为true
5-2 判断是否含有字符
创建一个正则表达式,判断是都含有a或则b
使用 | 或
var reg =new RegExp(/a|b/,'i');
var str='abcde'
var result=reg.test(str)
alert(result)
//结果为true
【】通常也表示或的意思;
如上可改写成
var reg =new RegExp(/[ab]/,'i');
var str='abcde'
var result=reg.test(str)
alert(result)
//结果为true
常见正则表达式见上方。