面试官问:怎么让localStorage像cookie那样有过期时间

Posted _阿锋丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试官问:怎么让localStorage像cookie那样有过期时间相关的知识,希望对你有一定的参考价值。

思路

昨天被面试官问到时有点蒙,今天考察了一下,l利用封装的思想,只用在设置一个key的是再携带设置另一个时间key,另一个key为你想设置的它的最大生命周期就可以了。获取的时候比较一下这个时间key,如果过期了就remove,获取不到

实现

需要自定义set和get方法

自定义set()

    function set(key, value, expired) 
      // 设置好要存储的值
      console.log(key, value);
      localStorage.setItem(JSON.stringify(key), JSON.stringify(value))

      //根据设置好存储值的key 再在localStorage设置另一个关联它的最大生存时间
      if (expired) 
        localStorage.setItem(`$key__expires__`, Date.now() + 1000 * 60 * expired)
      
      return value
    

    set('key', 'wangfeng', 0.1)

运行了一下

自定义get()

    function get(key) 
      // 取出当前key的最大生存周期时间
      let expired = localStorage.getItem(`$key__expires__`) || Date.now() + 1

      // 比较当前时间是否过期
      let now = Date.now()
      if (now > expired) 
        localStorage.removeItem(JSON.stringify(key))
        localStorage.removeItem(`$key__expires__`)
        return
      
      return localStorage.getItem(JSON.stringify(key)) ? JSON.parse(localStorage.getItem(JSON.stringify(key))) : localStorage.getItem(JSON.stringify(key))

    


    console.log(get('key'));

运行:
上面最大生存时间我 设置是 0.1 分钟
超过时间了 获取不到了,

参考:https://segmentfault.com/a/1190000016892019

以上是关于面试官问:怎么让localStorage像cookie那样有过期时间的主要内容,如果未能解决你的问题,请参考以下文章

面试官问你:为什么选择spring作为Java框架,你该怎么回答?

面试官问:“给你一支笔,怎么测试?”这答案让人惊叹…

面试官问:分库分表后,你们是怎么迁移和部署上线的?怎么保证一致性?

面试的时候面试官问如何看待加班,该怎么回答?

面试官问:说说你对cookie的理解?

面试官问你GC怎么调优?思路是什么呀?我直接把这篇文章甩到面试官脸上