localStorage

/**
 * localStorage
 * @调用:_local.set('access_token', '123456', 5000);
 * @调用:_local.get('access_token');
 */

var _local = {
  //存储,可设置过期时间
  set(key, value, expires) {
    let params = { key, value, expires };
    if (expires) {
      // 记录何时将值存入缓存,毫秒级
      var data = Object.assign(params, { startTime: new Date().getTime() });
      localStorage.setItem(key, JSON.stringify(data));
    } else {
      if (Object.prototype.toString.call(value) == '[object Object]') {
        value = JSON.stringify(value);
      }
      if (Object.prototype.toString.call(value) == '[object Array]') {
        value = JSON.stringify(value);
      }
      localStorage.setItem(key, value);
    }
  },
  //取出
  get(key) {
    let item = localStorage.getItem(key);
    // 先将拿到的试着进行json转为对象的形式
    try {
      item = JSON.parse(item);
    } catch (error) {
      // eslint-disable-next-line no-self-assign
      item = item;
    }
    // 如果有startTime的值,说明设置了失效时间
    if (item && item.startTime) {
      let date = new Date().getTime();
      // 如果大于就是过期了,如果小于或等于就还没过期
      if (date - item.startTime > item.expires) {
        localStorage.removeItem(name);
        return false;
      } else {
        return item.value;
      }
    } else {
      return item;
    }
  },
  // 删除
  remove(key) {
    localStorage.removeItem(key);
  },
  // 清除全部
  clear() {
    localStorage.clear();
  }
}

sessionStorage

/**
* sessionStorage
*/
var _session = {
  get: function (key) {
    var data = sessionStorage[key];
    if (!data || data === "null") {
      return null;
    }
    return JSON.parse(data).value;
  },
  set: function (key, value) {
    var data = {
      value: value
    }
    sessionStorage[key] = JSON.stringify(data);
  },
  // 删除
  remove(key) {
    sessionStorage.removeItem(key);
  },
  // 清除全部
  clear() {
    sessionStorage.clear();
  }
}

export { _local, _session }

ES5写法

/**
* localStorage
*/
var storage = {
  //存储,可设置过期时间
  set: function set(key, value, expires) {
    var params = {
      key: key,
      value: value,
      expires: expires
    };

    if (expires) {
      // 记录何时将值存入缓存,毫秒级
      var data = Object.assign(params, {
        startTime: new Date().getTime()
      });
      localStorage.setItem(key, JSON.stringify(data));
    } else {
      if (Object.prototype.toString.call(value) == '[object Object]') {
        value = JSON.stringify(value);
      }

      if (Object.prototype.toString.call(value) == '[object Array]') {
        value = JSON.stringify(value);
      }

      localStorage.setItem(key, value);
    }
  },
  //取出
  get: function get(key) {
    var item = localStorage.getItem(key); // 先将拿到的试着进行json转为对象的形式

    try {
      item = JSON.parse(item);
    } catch (error) {
      // eslint-disable-next-line no-self-assign
      item = item;
    } // 如果有startTime的值,说明设置了失效时间


    if (item && item.startTime) {
      var date = new Date().getTime(); // 如果大于就是过期了,如果小于或等于就还没过期

      if (date - item.startTime > item.expires) {
        localStorage.removeItem(name);
        return false;
      } else {
        return item.value;
      }
    } else {
      return item;
    }
  },
  // 删除
  remove: function remove(key) {
    localStorage.removeItem(key);
  },
  // 清除全部
  clear: function clear() {
    localStorage.clear();
  }
};

=========================================== 分割线 ===========================================

/**
* sessionStorage
*/
var _session = {
  get: function get(key) {
    var data = sessionStorage[key];

    if (!data || data === "null") {
      return null;
    }

    return JSON.parse(data).value;
  },
  set: function set(key, value) {
    var data = {
      value: value
    };
    sessionStorage[key] = JSON.stringify(data);
  },
  // 删除
  remove: function remove(key) {
    sessionStorage.removeItem(key);
  },
  // 清除全部
  clear: function clear() {
    sessionStorage.clear();
  }
};