本地存储特性

  • 数据存储在用户浏览器中
  • 设置、读取方便、甚至页面刷新不丢失数据
  • 容量较大,sessionStorage5MlocalStorage20M
  • 只能存储字符串,可以将对象JSON.stringify()编码后存储,然后使用的使用JSON.parse()转换回对象

    window.sessionStorage

    1、生命周期为关闭浏览器窗口
    2、在同一个窗口(页面)下数据可以共享
    3、以键值对的形式存储使用
    存储数据:

    1. sessionStorage.setItem(key, value)

    获取数据:

    1. sessionStorage.getItem(key)

    删除数据:

    1. sessionStorage.removeItem(key)

    清空数据:(所有都清除掉)

    1. sessionStorage.clear()

    window.localStorage

    1、声明周期永久生效,除非手动删除 否则关闭页面也会存在
    2、可以多窗口(页面)共享(同一浏览器可以共享)
    3. 以键值对的形式存储使用
    存储数据:

    1. localStorage.setItem(key, value)

    获取数据:

    1. localStorage.getItem(key)

    删除数据:

    1. localStorage.removeItem(key)

    清空数据:(所有都清除掉)

    1. localStorage.clear()

    工具函数的封装

    ```javascript class StorageFn { constructor () {

    1. this.ls = window.localStorage;
    2. this.ss = window.sessionStorage;

    }

    /————————-cookie——————————-/ /设置cookie/ setCookie (name, value, day) {

    1. var setting = arguments[0];
    2. if (Object.prototype.toString.call(setting).slice(8, -1) === 'Object'){
    3. for (var i in setting) {
    4. var oDate = new Date();
    5. oDate.setDate(oDate.getDate() + day);
    6. document.cookie = i + '=' + setting[i] + ';expires=' + oDate;
    7. }
    8. }else{
    9. var oDate = new Date();
    10. oDate.setDate(oDate.getDate() + day);
    11. document.cookie = name + '=' + value + ';expires=' + oDate;
    12. }

    }

    /获取cookie/ getCookie (name) {

    1. var arr = document.cookie.split('; ');
    2. for (var i = 0; i < arr.length; i++) {
    3. var arr2 = arr[i].split('=');
    4. if (arr2[0] == name) {
    5. return arr2[1];
    6. }
    7. }
    8. return '';

    }

    /删除cookie/ removeCookie (name) {

    1. this.setCookie(name, 1, -1);

    }

  1. /*-----------------localStorage---------------------*/
  2. /*设置localStorage*/
  3. setLocal(key, val) {
  4. var setting = arguments[0];
  5. if (Object.prototype.toString.call(setting).slice(8, -1) === 'Object'){
  6. for(var i in setting){
  7. this.ls.setItem(i, JSON.stringify(setting[i]))
  8. }
  9. }else{
  10. this.ls.setItem(key, JSON.stringify(val))
  11. }
  12. }
  13. /*获取localStorage*/
  14. getLocal(key) {
  15. if (key) return JSON.parse(this.ls.getItem(key))
  16. return null;
  17. }
  18. /*移除localStorage*/
  19. removeLocal(key) {
  20. this.ls.removeItem(key)
  21. }
  22. /*移除所有localStorage*/
  23. clearLocal() {
  24. this.ls.clear()
  25. }
  26. /*-----------------sessionStorage---------------------*/
  27. /*设置sessionStorage*/
  28. setSession(key, val) {
  29. var setting = arguments[0];
  30. if (Object.prototype.toString.call(setting).slice(8, -1) === 'Object'){
  31. for(var i in setting){
  32. this.ss.setItem(i, JSON.stringify(setting[i]))
  33. }
  34. }else{
  35. this.ss.setItem(key, JSON.stringify(val))
  36. }
  37. }
  38. /*获取sessionStorage*/
  39. getSession(key) {
  40. if (key) return JSON.parse(this.ss.getItem(key))
  41. return null;
  42. }
  43. /*移除sessionStorage*/
  44. removeSession(key) {
  45. this.ss.removeItem(key)
  46. }
  47. /*移除所有sessionStorage*/
  48. clearSession() {
  49. this.ss.clear()
  50. }

} ```