localStorage与sessionStorage的区别

572 阅读2分钟

1. localStorage对象

localStorage:本地存储(是window下面的一个对象),每个网站会有一个自己独立的localstorage

应用:用户在登录页免登陆

语法(直接调用localStorage里面的方法) :

  • 存数据 : localStorage.setItem('属性名',属性值)->相同的属性名会进行修改

  • 取数据(有返回值) : localStorage.getItem('属性名')

  • 删数据 : localStorage.removeItem('属性名')

  • 清空数据 : localStorage.clear()

    注意点 :

    • 永久存储 : 数据存在硬盘中(关机了仍然存在),每个网站的localStorage是独立的,是认域名的
    • 只能存储string类型数据, 如果存储其他类型编译器会自动转换string类型存储
        // 存数据 :  localStorage.setItem('属性名',属性值)
           document.querySelector('.setItem').onclick = function () {
               localStorage.setItem('name', '张三')
               localStorage.setItem('pwd', 'xsss')
               localStorage.setItem('age', '23')
               localStorage.setItem('age', {
                   name: '1111'
               })
           }
   
           // 取数据 :  localStorage.getItem('属性名')
           document.querySelector('.getItem').onclick = function () {
               let pwd = localStorage.getItem('pwd')
               console.log(pwd)
           }
   
           // 删数据 :   localStorage.removeItem('属性名')
           document.querySelector('.removeItem').onclick = function () {
               localStorage.removeItem('age')
           }
   
           //清空数据 : localStorage.clear()
           document.querySelector('.clear').onclick = function () {
               window.localStorage.clear()
           }

类似于dom里面的setAttribute(没有clear)用来存储数据

2. sessionStorage对象

sessionStorage : 会话存储(也是一个对象)

作用:用来临时存储

应用场景: 页面间传值(移动端使用比较多,上一页的数据移动到下一页时把上一页的数据传到下一页,页面数据在页面跳转时,内存消失),其实vue中是用url传值的

语法(用法同localStorage一模一样) :

  • 存数据 : sessionStorage.setItem('属性名',属性值)
  • 取数据 : sessionStorage.getItem('属性名')
  • 删数据 : sessionStorage.removeItem('属性名')
  • 清空数据 : sessionStorage.clear()

注意点 :

  • 临时存储 : 数据存在内存中, 页面一旦关闭数据自动清空(内存就是这个特点,一关闭里面存的东西都没了)
  • 只能存储string类型数据, 如果存储其他类型编译器会自动转换string类型存储

3. localStorage与sessionStorage的异同点

  • 相同点: 作用一致,都是存储数据

  • 不同点: 存储方式不同

    • localStorage : 硬盘存储(永久存储)
    • sessionStorage : 内存存储(临时存储)

4. json解决localStorage对象存储问题

由于localStorage和sessionStorage只能存储string类型,导致js对象数据类型无法存储,这里可以转换成json格式从而解决这一问题,JSON 是一种数据格式,本质就是字符串,用来解决数据 跨平台(前后端)传输的兼容性

简单介绍一下json的格式转换:

  • json -> js : let jsObj = JSON.parse( json格式 )
  • js -> json : et jsonStr = JSON.stringify( js对象 )
        let obj = {
            name: '张三',
            age: 20,
            sex: '男'
        }

        document.querySelector('.btn1').onclick = function () {
            //存 : (1)js -> json  (2)存json
            // //(1)js->json
            // let jsonStr = JSON.stringify( obj )
            // //(2)存json
            // localStorage.setItem('user',jsonStr)

            //合写一行
            localStorage.setItem('obj', JSON.stringify(obj))
        }

        document.querySelector('.btn2').onclick = function () {
            //取: (1)取json  (2)json->js
            // //(1)取json
            // let jsonStr = localStorage.getItem('user')
            // //(2)json->js
            // let jsObj = JSON.parse( jsonStr )
            //合写一行
            console.log(JSON.parse(localStorage.getItem('obj')))
        }