js对象分为3种:自定义对象,内置对象,浏览器对象
前面两种属于ECMAScript,浏览器对象是js独有的 ,在JS API讲解
内置对象就是JS自带的对象
1、怎么查文档?MDN/W3C
MDN提供了有关开放网络技术信息:http://developer.mozilla.org/zh-CN/
查阅该方法的功能,查看参数的类型,查看返回值的意义与类型,通过demo进行测试。
2、Math对象
Math对象不是一个构造函数,是一个内置对象,直接使用就可以,不需要new来调用例如:Math.PI Math.max(1,99,89)
利用对象封装自己的数学对象,里面有PI最大值和最小值
var myMath={
PI:3.141592653,
max:function(){
var max=arguments[0];
for (var i=1;i<arguments.length;i++){
if (arguments[i]>max){
max=arguments[i]
}
}
return max
}
}
console.log(myMath.PI)
console.log(myMath.max(1,5,9))
3、想得到两个数之间的随机整数,并且包含这2个整数
Math.floor(Math.random()*(max - min +1))+min
4、日期函数Date(),是一个构造函数,需要new来创建日期对象。
var date=new Date() //创建一个数组对象
获得Date总的毫秒数
(1)、var date1 = +new Date();
console.log(date1)
(2) 、H5新增的 获得的总的毫秒数
console.log(Date.now())
5、倒计时案例
核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减。
用时间戳来做,用户输入时间总的毫秒数减去现在时间总的毫秒数就是剩余时间的毫秒数
把剩余时间总的毫秒数转换为时、分、秒。
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+'秒'
}
console.log(countDown('2021-10-31 19:00:03'))
var date = new Date()
console.log(date)
6、数组
1、数组的创建方式
var arr=[]
var arr=new Array()
var arr=new Array(2,3)//表示有两个数组元素2和3
2、检测是否为数组
(1)instanceof 运算符,用来检测是否为数组
var arr=[]
comsole.log(arr instanceof Array)
(2) Array.isArray(参数)
3、添加或删除数组元素
(1)push ()在我们数组的末尾添加。push完之后,返回的结果时新数组的长度。
var arr=[1,2,3,4,]
arr.push(5)
(2)unshift 在我们数组的开头,添加元素
(3) pop() 可以删除数组的最后一个元素
(4)shift () 删除数组的第一个元素,数组长度减一
4、数组排序
reverse() 翻转数组,无参数
sort()冒泡排序
var arr1=[13,4,7,77]
arr1.sort(function(a,b) {
return a-b //升序的顺序排列
})
console.log(arr1)
5、数组索引号方法
(1)indexOf(元素) 如果有重复元素,只返回第一个满足条件的索引号,,没找到返回-1
(2)lastIndexOf (元素) 从后往前查找
案例:去除重复元素
我们遍历旧数组,然后拿着 旧数组去查找新数组,如果在新数组没有出现过,就添加。
function unique(arr){
var newArr=[]
for (var i=0;i<arr.length;i++){
if ( newArr.indexOf(arr[i])===-1){
newArr.push(arr[i])
}
}
return newArr
}
var demo=unique(['c','b','b','d','m','k','d'])
console.log(demo)
6、数组转成字符串
(1)toString()
(2)join('分隔符')
7、字符串对象
基本包装类型就是把简单数据类型包装成负责数据类型,这样基本数据类型就有了数据和方法
按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为js会把基本数据类型包装成复杂数据类型,过程如下:
生成临时变量,把简单类型包装成复杂数据类型
var temp=new String('andy')
赋值给我们声明的变量
str=temp
销毁临时变量
temp=null
8、字符串的不变性
指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
根据字符返回位置
indexOf(‘要查找的字符',[起始的位置]) 从起始位置往后查找
lastIndexOf 从后往前查找
9、根据位置返回字符
charAt(index) index:字符串的索引号
返回ASCII码 charCodeAt(index)
案例:查找bhudosnsnooooudibo的出现最多的字符,统计次数
核心算法charAt遍历数组
var str ='bhudosnsnooooudibo'
var o = {} //声明一个对象
for (var i =0;i<str.length;i++) {
var chars= str.charAt(i)
if (o[chars]){ //o[chars]得到的是属性值
o[chars]++
}else {
o[chars]=1
}
}
console.log(o)
10、字符串转数组
split(’分隔符')