【JavaScript】21_Date对象 ,日期的格式化,包装类与垃圾回收机制

116 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天,点击查看活动详情

8、Date

Date

  • 在JS中所有的和时间相关的数据都由Date对象来表示

  • 对象的方法:

    getFullYear() 获取4位年份

    getMonth() 返当前日期的月份(0-11)

    getDate() 返回当前是几日

    getDay() 返回当前日期是周几(0-6) 0表示周日

    ......

getTime() 返回当前日期对象的时间戳

时间戳:自1970年1月1日0时0分0秒到当前时间所经历的毫秒数

计算机底层存储时间时,使用都是时间戳

Date.now() 获取当前的时间戳

     <script>
         let d = new Date() // 直接通过new Date()创建时间对象时,它创建的是当前的时间的对象
 ​
         // 可以在Date()的构造函数中,传递一个表示时间的字符串
         // 字符串的格式:月/日/年 时:分:秒
         // 年-月-日T时:分:秒
         d = new Date("2019-12-23T23:34:35")
 ​
 ​
         // new Date(年份, 月, 日, 时, 分, 秒, 毫秒)
         d = new Date(2016, 0, 1, 13, 45, 33)
 ​
         d = new Date()
 ​
 ​
         result = d.getFullYear()
         result = d.getMonth()
         result = d.getDate()
         result = d.getDay()
 ​
         result = d.getTime()
 ​
         console.log(result) // 1659088108520 毫秒
     </script>

9、日期的格式化

toLocaleString()

  • 可以将一个日期转换为本地时间格式的字符串

  • 参数:

    1. 描述语言和国家信息的字符串 zh-CN 中文中国 zh-HK 中文香港 en-US 英文美国

    2. 需要一个对象作为参数,在对象中可以通过对象的属性来对日期的格式进行配置 dateStyle 日期的风格 timeStyle 时间的风格 full long medium short hour12 是否采用12小时值 true false weekday 星期的显示方式 long short narrow

      year ​ numeric ​ 2-digit

         <script>
             const d = new Date()
             let result = d.toLocaleDateString() // 将日期转换为本地的字符串
             result = d.toLocaleTimeString() // 将时间转换为本地的字符串
 ​
             result = d.toLocaleString("zh-CN", {
                 year: "numeric",
                 month: "long",
                 day: "2-digit",
                 weekday: "short",
             })
 ​
             console.log(result)
         </script>

10、包装类

在JS中,除了直接创建原始值外,也可以创建原始值的对象

通过 new String() 可以创建String类型的对象

通过 new Number() 可以创建Number类型的对象

通过 new Boolean() 可以创建Boolean类型的对象

  • 但是千万不要这么做

包装类:

JS中一共有5个包装类

String --> 字符串包装为String对象

Number --> 数值包装为Number对象

Boolean --> 布尔值包装为Boolean对象

BigInt --> 大整数包装为BigInt对象

Symbol --> 符号包装为Symbol对象

  • 通过包装类可以将一个原始值包装为一个对象,

当我们对一个原始值调用方法或属性时,JS解释器会临时将原始值包装为对应的对象

然后调用这个对象的属性或方法

  • 由于原始值会被临时转换为对应的对象,这就意味着对象中的方法都可以直接通过原始值来调用
     <script>
             // let str = new String("hello")
             // let num = new Number(11)
             // let bool = new Boolean(true)
             // let bool2 = new Boolean(true)
 ​
             // alert(bool == bool2)
 ​
             let str = "hello"
 ​
             str.name = "哈哈"
 ​
             let num = 11
             num = num.toString()
 ​
             // null.toString()
 ​
             console.log(num)
     </script>

11、垃圾回收

垃圾回收(Garbage collection)

  • 和生活一样,生活时间长了以后会产生生活垃圾 程序运行一段时间后也会产生垃圾

  • 在程序的世界中,什么是垃圾?

    • 如果一个对象没有任何的变量对其进行引用,那么这个对象就是一个垃圾
    • 垃圾对象的存在,会严重的影响程序的性能
    • 在JS中有自动的垃圾回收机制,这些垃圾对象会被解释器自动回收,我们无需手动处理
    • 对于垃圾回收来说,我们唯一能做的事情就是将不再使用的变量设置为null
     <script>
         let obj = {name:'孙悟空'}
         let obj2 = obj
 ​
         obj = null
         obj2 = null
     </script>