原始类型调用方法
原始类型是简单的值,默认不能调用属性和方法,javascript为了可以使其可以获取属性和调用方法,对其封装了对应的包装类型。
- String
- Number
- Boolean
- Symbol
- BigInt
包装类型的使用过程
- 根据原始值,创建一个原始类型对应的包装类型对象
- 调用对应的属性或者方法,返回一个新的值
- 创建的包装类对象被销毁
- 通常JavaScript引擎会进行很多的优化,它可以跳过创建包装类的过程在内部直接完成属性的获取或者方法的调用。
null、undefined没有任何方法和属性,也不存在包装类型
Math对象
- Math.PI: 圆周率
- Math.floor: 向下取整
- Math.ceil: 向上取整
- Math.round: 四舍五入
- Math.random(): 随机[0,1)
- Math.pow(2,4): 2**4
数组
-
push
-
pop
-
unshift
-
shift
-
arr.at(-1)
-
arr.splice(start,delCount,[item1],[item2]...): 修改原数组
-
length
var name = [2,3,4] console.log(name.length) // 3 name.length = 5 // [ 2, 3, 4, <2 empty items> ] name.length = 2 // [ 2, 3 ]
-
arr.slice(start,end): 不会修改原数组
-
arr.concat(arr1):不会修改原数组
-
arr.join(flag):
-
indexOf(): 返回索引或-1
-
lastIndexOf()
-
includes()
-
find(fn)
-
findIndex(fn)
-
sort(a,b)
-
reverse()
-
froEach(fn):
-
filter(fn)
-
map(fn)
-
reduce(fn):
// 高阶函数,函数作为参数 var stu = find(function(item){ // 依次调用此函数 if (item.id === 101) { return true } }) // forEach原理 function hyForEach(fn) { for (var i=0;i<names.length;i++) { fn(names[i],i,names) } } hyForEach(function(item,index,names){ // do some thing }) // foreach 终极版本 Array.prototype.hyForEach = function(fn){ for (var i=0;i<this.length;i++) { fn(this[i],i,this) } } var arr = [1,2,3,4] arr.hyForEach(function(item,i,arr){ console.log(item,i,arr) }) // reduce var numr = [1,2,3,4,5,6] var res = 0 numr.reduce(function(total,item,i,arr){ return total+item },0)
var name = ['1','e','50']
name[0]
name.at(0) // .at(-1), 从尾部数
name[0] = 'hyf'
name[3] = 'hyf01'
// delete name[0] // [empty,'e','50','hyf01']
name.push('aa','bb') // ['1','e','50','hyf01','aa','bb']
name.pop() // // ['1','e','50','hyf01','aa']
name.unshift('cc','dd') // ['cc','dd','e','50','hyf01','aa','bb']
name.shift() // ['dd','e','50','hyf01','aa','bb']
// 增、删、改
name.splice(0,2) // ['50','hyf01','aa','bb']
name.splice(0,0,'a1','a2') // ['a1','a2','50','hyf01','aa','bb']
name.splice(0,2,'b1','b2') // ['b1','b2' ,'50','hyf01','aa','bb']
Date对象
- RFC 2822标准
new Date() Tue Dec 27 2022 00:37:53 GMT+0800 (中国标准时间)
- ISO 8601标准:
2022-12-26T16:43:16.100Z
- YYYY: 0000-9999
- MM: 01-12
- DD: 01-31
- T:物特殊含义,分割日期和时间,可以省略
- HH: 00-24
- mm:00-59
- ss:秒 00-59
- .sss:毫秒
- Z: 时区
var date1 = new Date()
var date2 = new Date(1000) // 毫秒数
var date3 = new Date('2022-08-09')
var date4 = new Date(2022,08,09,09,09,09)
-
getFullYear()
-
getMonth(): 0-11,需要加1
-
getDate():天 1-31
-
getHours(): 时
-
getMinutes():分
-
getSeconds(): 秒
-
getDay(): 一周中的第几天
-
setXXXX(): 修改时间如setFullYear(2033)
// 获取时间戳 date1.getTime() date1.valueOf() +date1 // 当前时间戳 Date.now()
-
Date.parse
Date.parse(timeString) // 获取时间戳 等同于new Date(timeString).getTime()