• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

localStorage、sessionStorage ES6简单封装

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0703/5095.html 1190000019643625

localStorage、sessionStorage ES6简单封装:

class Store {
  constructor (store) {
    // 检测是否支持localstorage
    if (!store) {
      console.log('不支持localStorage')
      return
    }
    this._store = store
  }

  /**
   * @function 设置值
   * @param {string} _k 必须参数,属性
   * @param {any} _v 非必须参数,属性值
   */
  setItem (_k, _v) {
    if (!this._store) return
    let kType = this.getType(_k)
    if (kType === 'string') {
      this._store.setItem(_k, this.filterValue(_v))
    } else {
      console.log('key只能为字符串!')
    }
  }

  /**
   * @function 获取值
   * @param {string} _k 必须参数,属性
   */
  getItem (_k) {
    if (!this._store) return
    let res
    let kType = this.getType(_k)
    if (kType === 'string') {
      res = this._store.getItem(_k)
    } else {
      console.log('key只能为字符串!')
    }
    return res
  }

  /**
   * @function 移除值
   * @param {string} _k 必须参数,属性
   */
  removeItem (_k) {
    if (!this._store) return
    let kType = this.getType(_k)
    if (kType === 'string') {
      res = this._store.removeItem(_k)
    } else {
      console.log('key只能为字符串!')
    }
  }

  /**
   * @function 移除所有
   */
  clear () {
    if (!this._store) return
    this._store.clear()
  }

  /**
   * @function 判断类型
   * @param {any} para 必须参数,判断的值
   */
  getType (para) {
    let type = typeof para
    if (type === 'number' && isNaN(para)) return 'NaN'
    if (type !== 'object') return type
    return Object.prototype.toString
      .call(para)
      .replace(/[\[\]]/g, '') // eslint-disable-line
      .split(' ')[1]
      .toLowerCase()
  }

  /**
   * @function 过滤值
   * @param {any} val 必须参数,过滤的值
   */
  filterValue (val) {
    let vType = this.getType(val)
    let nullVal = ['null', 'undefined', 'NaN']
    let stringVal = ['boolen', 'number', 'string']
    if (nullVal.indexOf(vType) >= 0) return ''
    if (stringVal.indexOf(vType) >= 0) return val
    return JSON.stringify(val)
  }
}

class LocalStorage extends Store {
  constructor (store) { // eslint-disable-line
    super(store)
  }
  WX_USER_ID = 'WX_USER_ID'
}

class SessionStorage extends Store {
  constructor (store) { // eslint-disable-line
    super(store)
  }
  WX_SSO_TITLE = 'WX_SSO_TITLE'
}

const lStorage = new LocalStorage(window.localStorage || localStorage)
const sStorage = new SessionStorage(window.sessionStorage || sessionStorage)

export {
  lStorage,
  sStorage
}

使用方式:

import { lStorage, sStorage } from './storage.js'

lStorage.setItem(lStorage.WX_USER_ID, ['val'])
lStorage.getItem(lStorage.WX_USER_ID) // ['val']

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!