如何在模拟 localStorage 中添加过期时间?

5 min read

要模拟 localStorage 的过期时间功能,可以使用以下方法:

  1. 在存入数据时,除了 key 和 value 的键值对外,加入一个过期时间的键值对。例如:

    localStorage.setItem('key', JSON.stringify({
        value: 'value',
        expire: Date.now() + 3600 * 1000 // 设定过期时间为一小时后
    }));
    
  2. 在获取数据时,先判断该数据的过期时间是否已经超过当前时间。如果已经超过,则删除该数据并返回 null,否则返回该数据的值。例如:

    const data = JSON.parse(localStorage.getItem('key'));
    if (data && data.expire > Date.now()) {
        return data.value;
    } else {
        localStorage.removeItem('key');
        return null;
    }
    
  3. 可以在每次访问 localStorage 时,遍历所有存储的数据,判断其过期时间是否已经到达,如果是则删除该数据。例如:

    Object.keys(localStorage).forEach((key) => {
        const data = JSON.parse(localStorage.getItem(key));
        if (data && data.expire < Date.now()) {
            localStorage.removeItem(key);
        }
    });
    

通过以上方法,就可以在 localStorage 中实现过期时间功能了。