1. class Storage{
    2. constructor(name){
    3. this.name = 'storage';
    4. }
    5. //设置缓存
    6. setItem(params){
    7. let obj = {
    8. name:'',
    9. value:'',
    10. expires:"",
    11. startTime:new Date().getTime()//记录何时将值存入缓存,毫秒级
    12. }
    13. let options = {};
    14. //将obj和传进来的params合并
    15. Object.assign(options,obj,params);
    16. if(options.expires){
    17. //如果options.expires设置了的话
    18. //以options.name为key,options为值放进去
    19. localStorage.setItem(options.name,JSON.stringify(options));
    20. }else{
    21. //如果options.expires没有设置,就判断一下value的类型
    22. let type = Object.prototype.toString.call(options.value);
    23. //如果value是对象或者数组对象的类型,就先用JSON.stringify转一下,再存进去
    24. if(Object.prototype.toString.call(options.value) == '[object Object]'){
    25. options.value = JSON.stringify(options.value);
    26. }
    27. if(Object.prototype.toString.call(options.value) == '[object Array]'){
    28. options.value = JSON.stringify(options.value);
    29. }
    30. localStorage.setItem(options.name,options.value);
    31. }
    32. }
    33. //拿到缓存
    34. getItem(name){
    35. let item = localStorage.getItem(name);
    36. //先将拿到的试着进行json转为对象的形式
    37. try{
    38. item = JSON.parse(item);
    39. }catch(error){
    40. //如果不行就不是json的字符串,就直接返回
    41. item = item;
    42. }
    43. //如果有startTime的值,说明设置了失效时间
    44. if(item.startTime){
    45. let date = new Date().getTime();
    46. //何时将值取出减去刚存入的时间,与item.expires比较,如果大于就是过期了,如果小于或等于就还没过期
    47. if(date - item.startTime > item.expires){
    48. //缓存过期,清除缓存,返回false
    49. localStorage.removeItem(name);
    50. return false;
    51. }else{
    52. //缓存未过期,返回值
    53. return item.value;
    54. }
    55. }else{
    56. //如果没有设置失效时间,直接返回值
    57. return item;
    58. }
    59. }
    60. //移出缓存
    61. removeItem(name){
    62. localStorage.removeItem(name);
    63. }
    64. //移出全部缓存
    65. clear(){
    66. localStorage.clear();
    67. }
    68. }

    localStorage设置过期时间
    如何给localStorage设置一个过期时间?
    sessionstorage的时间_localStorage和sessionStorage本地存储