国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

localStorage、sessionStorage ES6 簡單封裝 Vue

Ilikewhite / 740人閱讀

摘要:簡單封裝檢測是否支持不支持設(shè)置值必須參數(shù),屬性非必須參數(shù),屬性值只能為字符串獲取值必須參數(shù),屬性只能為字符串移除值必須參數(shù),屬性只能為字符串移除所有判斷類型必須參數(shù),判斷的值過濾值必須參數(shù),過濾的值使用方式

localStorage、sessionStorage ES6簡單封裝:
class Store {
  constructor (store) {
    // 檢測是否支持localstorage
    if (!store) {
      console.log("不支持localStorage")
      return
    }
    this._store = store
  }

  /**
   * @function 設(shè)置值
   * @param {string} _k 必須參數(shù),屬性
   * @param {any} _v 非必須參數(shù),屬性值
   */
  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 必須參數(shù),屬性
   */
  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 必須參數(shù),屬性
   */
  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 必須參數(shù),判斷的值
   */
  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 必須參數(shù),過濾的值
   */
  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"]

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105237.html

相關(guān)文章

  • 用Class寫一個(gè)記住用戶離開位置的js插件

    摘要:咱們?yōu)榧磳懙膸炱饌€(gè)名字為,開始就是如下的樣子啦處理傳進(jìn)來的參數(shù)我們需要在類的構(gòu)造函數(shù)中接收參數(shù),并覆蓋默認(rèn)參數(shù)。 前言 常見的js插件都很少使用ES6的class,一般都是通過構(gòu)造函數(shù),而且常常是手寫CMD、AMD規(guī)范來封裝一個(gè)庫,比如這樣: // 引用自:https://www.jianshu.com/p/e65c246beac1 ;(function(undefined) { ...

    haobowd 評論0 收藏0
  • 用Class寫一個(gè)記住用戶離開位置的js插件

    摘要:咱們?yōu)榧磳懙膸炱饌€(gè)名字為,開始就是如下的樣子啦復(fù)制代碼處理傳進(jìn)來的參數(shù)我們需要在類的構(gòu)造函數(shù)中接收參數(shù),并覆蓋默認(rèn)參數(shù)。 前言常見的js插件都很少使用ES6的class,一般都是通過構(gòu)造函數(shù),而且常常是手寫CMD、AMD規(guī)范來封裝一個(gè)庫,比如這樣: // 引用自:https://www.jianshu.com/p/e65... (function(undefined) { use s...

    xialong 評論0 收藏0
  • 用Class寫一個(gè)記住用戶離開位置的js插件

    摘要:咱們?yōu)榧磳懙膸炱饌€(gè)名字為,開始就是如下的樣子啦復(fù)制代碼處理傳進(jìn)來的參數(shù)我們需要在類的構(gòu)造函數(shù)中接收參數(shù),并覆蓋默認(rèn)參數(shù)。 前言常見的js插件都很少使用ES6的class,一般都是通過構(gòu)造函數(shù),而且常常是手寫CMD、AMD規(guī)范來封裝一個(gè)庫,比如這樣: // 引用自:https://www.jianshu.com/p/e65... (function(undefined) { use s...

    Bryan 評論0 收藏0
  • 用Class寫一個(gè)記住用戶離開位置的js插件

    摘要:咱們?yōu)榧磳懙膸炱饌€(gè)名字為,開始就是如下的樣子啦復(fù)制代碼處理傳進(jìn)來的參數(shù)我們需要在類的構(gòu)造函數(shù)中接收參數(shù),并覆蓋默認(rèn)參數(shù)。 前言常見的js插件都很少使用ES6的class,一般都是通過構(gòu)造函數(shù),而且常常是手寫CMD、AMD規(guī)范來封裝一個(gè)庫,比如這樣: // 引用自:https://www.jianshu.com/p/e65... (function(undefined) { use s...

    WilsonLiu95 評論0 收藏0
  • vue項(xiàng)目開發(fā)過程常見問題

    摘要:更新時(shí)間這個(gè)問題是實(shí)例內(nèi)單組件的必須返回一個(gè)對象如下為什么要一個(gè)數(shù)據(jù)對象呢官方解釋如下必須聲明為返回一個(gè)初始數(shù)據(jù)對象的函數(shù),因?yàn)榻M件可能被用來創(chuàng)建多個(gè)實(shí)例。 更新時(shí)間:2018-07-29 1.data functions should return an object // 這個(gè)問題是 Vue 實(shí)例內(nèi),單組件的data必須返回一個(gè)對象;如下 export default {...

    Apollo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<