内置对象
1.内置对象:
JS中对象:自定义对象 内置对象 浏览器对象(js独有的)
内置对象:js语言自带的一些对象,这些对象供开发者使用,并提供了一些最基本必要的功能
2.根据文档查询到指定API的使用方法:MDN网站
3.Math对象的使用方法
(1)math不是构造函数,不需要new调用,直接使用
(3)Math.max(1,2,3,4,5):比较最大值,存在非数字类型的值时返回NaN,不存在值时返回-infinity
封装对象:
var myMath = {
PI:3.14;
max:function(){
var max = arguments[0];
for(var i = 1;i<arguments.length;i++){
if(max<arguments[i]){
max=arguments;
}
}
return max
}
min:function(){
var min = arguments[0];
for(var i = 1;i<arguments.length;i++){
if(min>arguments[i]){
min=arguments;
}
}
}
return min
}
console.log(myMath.PI);
console.log(myMath.max(1,2,3,4,5));
console.log(myMath.min(1,2,3,4,5));
Math.abs():绝对值,输入结果为字符串型的数字,会发生隐式转换,输出绝对值;
Math.floor():向下取整
Math.ceil():下上取整
Math.round():就近取整 .5向大方向取 -1.5=>-1
Math的随机数方法:Math.random返回随机浮点数,[0,1),方法中没有参数
两个数之间的整数:[min,max]之间随机数:
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1))+min
}
console.log(getRandom(1,10))
随机点名:
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1))+min
}
console.log(getRandom(1,10))
var arr = ['001','002','003','004','005'];
console.log(arr[getRander(0,arr.length-1)])
猜数字:
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1))+min
}
var random = getRandom(0,10)
while(true){
var num = prompt('猜数字');
if(num > random){
alert("猜大了")
}else if(num < random){
alert("猜小了")
}else{
alert("猜对了")
break;
}
}
4.Date对象的使用方法
处理日期和时间,Date对象基于1970.01.01起的毫秒Date - JavaScript | MDN
注意:Date是一个构造函数,必须使用new来调用创建我们的日期对象,以常规函数调用它将返回一个字符串,而不是一个日期对象,Date对象没有字面量格式.
(1)使用Date,没有参数,返回当前日期时间
var date = new Date();
console.log(date)
(2)参数写法:数字型:2022,02,22,字符串型: "2022-02-22 02:02:02"
var date1 = new Date(2022,02,02);
console.log(date1);
var date2 = new Date('2022-02-02 02:02:02')
console.log(date2);
(3)格式化日期和时间
getFullYear():获取当年 getMonth():获取当月(0--11) getDate():获取当天日期
getDay():获取星期(周日为0,周六为6)
getHours():获取当前小时 getMinutes():获取当前分钟 getSeconds():获取当前秒钟
注意:使用时console.log(getMonth()+1)
输出星期:
var date = new Date();
var arr = ['星期1',星期2',星期3',星期4',星期5',星期6',星期日'];
var day = date.getDay()
console.log(arr(day))
输出时间(补0操作):
function getTime(){
var time = new Date();
var hour = time.getHours();
hour = hour<10?'0'+hour:hour
var minute = time.getMinutes();
minute = minute<10?'0'+minute:minute
var second = time.getSeconds();
second = second<10?'0'+second:second
return hour + ':' + minute + ':' + second
}
console.log(getTime());
(4)获取日期的总毫秒形式(时间戳)
1970-01:01(世界标准时间)至现在时间的总毫秒数
- 通过valueOf() 或者 getTime()
var date = new Date();
console.log(date.getTime());
console.log(date.valueOf());
- +new Date()返回的就是总毫秒数
var date1 = +new Date();
console.log(date1)
- H5 新增 Date.now()获得总毫秒数
console.log(Date.now())
案例:倒计时:利用时间戳
计算天数:d = parseInt(时间戳/60/60/24)
计算小时:h = parseInt(时间戳/60/60%24)
计算分钟:m = parseInt(时间戳/60%60)
计算当前秒数:s = parseInt(时间戳%60)
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 = <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 + '秒'
}
console.log(countDown('2022-04-20 20:20:20'))
var date = new Date();
console.log(date)
5.Array数组对象的使用方法
(1)数组对象的两种创建方法:
- new Array()
var arr = new Array();//长度为0的空数组
var arr = new Array(5);//长度为5的空数组,每个元素都为empty
var arr = new Array(1,2);//长度为2,元素依次为1,2的数组
-
字面量的方式
var arr = [1,2,3,4,5];
(2)检测参数是否为数组的两种方法:
- instanceof 运算符,检测参数是否为数组,返回值为true/false
var arr = [] consloe.log(arr instanceof Array) //输出true
var obj = [] consloe.log(obj instanceof Array) //输出false
- Array.isArray用于确定传递的师傅是一个Array,H5新增
console.log(Array.isArray(arr))//true
console.log(Array.isArray(obj))//false
注意:当检测array实例时,Array.isArray优先于instanceof
(3)添加删除数组元素
添加数组元素:
push(参数1,...)数组末尾添加一个或多个元素,注意修改原数组,返回值: 返回新的长度
unshift(参数1,...)数组开头添加一个或多个元素,注意修改原数组,返回值:返回一个新的长度
删除数组元素:
pop():删除数组末尾最后一个元素,数组长度减一,修改原数组,返回值:返回被删除的元素的值
shift():删除数组开头第一个元素,数组长度减一,修改原数组,返回值:返回被删除元素的值
var arr = [1,2,3,4,5];
//push末尾添加元素
console.log(arr.push('push'));//输出新数组长度6
arr.push(6)
console.log(arr); //[1,2,3,4,5,6]
//unshift头部添加元素
console.log(arr.push('unshift'));//输出新数组长度7
arr.push(7)
console.log(arr); //[7,1,2,3,4,5,6]
//pop末尾删除数组的一个元素
console.log(arr.pop()) //输出6 末尾第一个被删除的数为6
arr.pop();
consloe.log(arr) //输出[7,1,2,3,4,5]
//shift头部删除数组的一个元素
console.log(arr.shift()) //输出6 末尾第一个被删除的数为6
arr.shift();
consloe.log(arr) //输出[1,2,3,4,5]
(4)数组排序
翻转数组reverse():颠倒数组中元素的顺序,无参数,改变原来的数组返回新数组
数组排序sort():冒泡排序,单独使用对number数据最高位排序,对数组元素纪念性排序,改变原来的数组返回新数组
sort()方法搭配函数固定使用:
arr.sort(function(a,b){
return a-b //升序的顺序冒泡排序
return b-a //降序的顺序冒泡排序
});
console.log(arr)
var arr = [1,2,3,4,5];
arr.reverse();
console.log(reverse) //输出:[5,4,3,2,1]
arr.sort(function(a,b){
return a-b //升序的顺序冒泡排序
return b-a //降序的顺序冒泡排序
});
console.log(arr)
(5)数组索引方法
indexOf(数组元素):数组中查找元素的第一个索引,如果存在则返回索引号,如果不存在则返回-1;
lastIndexOf():在数组中的最后一个的索引,如果存在则返回索引号,如果不存在则返回-1;
注意:indexOf从前往后查找元素,只返回第一个满足条件的索引号,不存在寻找的元素返回-1;
lastIndexOf从后往前查找元素,只返回第一个满足条件的索引号,不存在寻找的元素返回-1;
var arr = [0,1,2,3,4,5,0]
console.log(arr.indexOf(0)) //输出0 索引号为0
console.log(arr.lastIndexOf(0)) //输出6 从后往前查找为
数组去重:
核心算法:遍历旧数组,用旧数组的元素去查询新数组,新数组中不存在就添加到新数组中
function unique(arr){
var newArr = [];
for(var i = 0;i<arr.length;i++){
if(newArr.intanceOf(arr[i]) === -1){
newArr.push() = arr[i]
}
return newArr;
}
}
console.log(unique(['a','b','a','b','b','c','d','e','f','f']))
(6)将数组转换为字符串的方法
toString(): console.log(arr,toString())
join('分隔符'):默认为逗号分隔符,console.log(arr.join()) console.log(arr.join("--"))等
6.String对象的使用方法
(1)基本包装类型
var str = 'aaaa'; console.log(str.length) //输出4
将简单数据类型包装成复杂数据类型,这样基本数据类型就有了属性和方法,过程:
将简单数据类型包装成复杂数据类型,创建临时变量 temp : var temp = new String('aaaa');
把临时变量的值给str : str = temp
销毁这个临时变量 temp = null
(2)字符串不可变
指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址改变了,内存中重新开辟了一个空间
因为字符串不可变性,所以不要大量拼接字符串,会导致内存变慢
所以:字符串中所有的方法都不会修改字符串本身
(3)根据字符串返回位置
indexOf :根据字符返回位置,str.indexOf('查找的字符',起始位置number型)
var str = '字符串对象,字符串对象';
console.log(str.indexOf('串')) //输出3
console.log(str.indexOf('串',3)) //输出8
lastIndexOf() : 从后往前查找,只查找第一个匹配的
(4)根据位置返回字符
charAt(索引号):返回指定位置的字符,str.charAt(4)
var str = '字符串对象,字符串对象';
console.log(str.charAt(3)) // 输出 串
//遍历字符串所有字符
for(var i = 0;i<str.length;i++){
console.log(str.charAt(i))
}
charCodeAt(索引号):获取指定位置出字符串的ASCII码,str.charCodeAt(6) 判断用户按下了哪个键
str[索引号]: 获取指定位置除字符, H5新增 str[9]
案例:统计字符串中出现最多的字符,并统计其次数
核心算法:利用charAt()遍历字符串,把每个字符存储给对象,没有该属性为1,存在该属性则+1,遍历对象,得到最大值和对应的字符
var str = 'aaaaabbbbccccddddd';
var o = {}
for(var i = 0;i<str.length;i++){
var chars = str.charAt(i)
if(o.chars){
o.chars+=1;
}else{
o.chars = 1
}
}
console.log(o) // 存储了每一个字符的对象
//遍历对象
var max = 0;
var ch = "";
for(var k in o){
//k得到的是属性名
//o[k]得到属性值
if(o[k]>max){
max = o[k]
}
}
console.log(max)
console.log(ch)
console.log('最多次数的字符是' + 'ch' + ',' + "次数为" + max)
(5)字符串操作方法(!important)
拼接字符串:
concat(str1,str2,str3...): 用于连接两个或多个字符串,拼接字符串,等效于+.+更常用;
截取字符串:
substr(start,length): 从str位置开始(索引号),length表示取的个数,(import)
str.substr(a,b) : 从索引号为a的位置开始,截取长度为b的字符串
slice(start,end):从start位置开始,截取到end位置,end位置字符取不到.不接受负值,其余与slice相同
var str = 'aaaabbbb'
console.log(str.concat('cccc')) //输出 aaaabbbbcccc
console.log(str.substr(2,4)) //输出 aaab
(6)替换字符串的方法
replace( "被替换的字符" , "替换后的字符" ),注意:被替换字符有相同多个时,只会替换第一个字符
(7)字符转换为数组的方法
split(" 转换符 "):将字符转换为数组 <=> join:将数组转换为字符
var str1 = 'aaa,bbb,ccc'
console.log(str.split(" , ")) //输出[aa,bbb,ccc]
var str2 = 'aaa&&bbb&&ccc'
console.log(str.split(" && ")) //输出[aa,bbb,ccc]