JS内置类型

原始类型调用方法

原始类型是简单的值,默认不能调用属性和方法,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()
    
posted @ 2023-03-25 23:52  转角90  阅读(29)  评论(0编辑  收藏  举报