JavaScript手写一个前端存储工具库

标题:JavaScript手写一个前端存储工具库

简介

前端存储工具库是用于在客户端存储数据的工具,常见的有Cookie、localStorage、sessionStorage等。今天我们将学习如何手写一个前端存储工具库,以方便我们在实际开发中使用。

代码实现

我们将实现一个名为store的前端存储工具库,支持以下功能:

  1. 存储:可支持存储值类型、对象类型以及数组类型的数据。
  2. 获取:支持根据key获取存储的对应值,若不存在则返回默认值。
  3. 删除:删除指定key对应的值。
  4. 清空:清空所有存储的值。

存储

存储数据要使用localStorage或者sessionStorage对象,根据不同的持久性来选择,我们可以通过检测是否有localStorage属性来进行判断,如果没有则使用sessionStorage。

const storage = {
    local: window.localStorage,
    session: window.sessionStorage
}
const getType = (value) => {
    const type = Object.prototype.toString.call(value).slice(8,-1);
    return type.toLowerCase();
}
const set = (key, value, type = 'local') => {
    const storageType = storage[type];
    if(getType(value) === 'object' || getType(value) === 'array') {
        value = JSON.stringify(value);
    }
    storageType.setItem(key, value);
}

在此代码段中,我们封装了一个简单的set方法,让用户可通过指定类型(local或session)存储数据,并能判断存储值是否为对象类型或数组类型,在后续操作中将其转为字符串,实现存储。

获取

const get = (key, defaultValue = null, type = 'local') => {
    const storageType = storage[type];
    let value = storageType.getItem(key);
    if(value === null) {
        return defaultValue;
    }
    try {
        value = JSON.parse(value);
    } catch (error) {
        console.warn(error);
    }
    return value;
}

在此代码段中,我们封装了一个简单的get方法,让用户可通过指定类型(local或session)获取数据,并能根据key判断是否存在该值,存在的话进行转换并返回。

删除

const remove = (key, type = 'local') => {
    const storageType = storage[type];
    storageType.removeItem(key);
}

在此代码段中,我们封装了一个简单的remove方法,让用户可通过指定类型(local或session)删除存储的数据。

清空

const clear = (type = 'local') => {
    const storageType = storage[type];
    storageType.clear();
}

在此代码段中,我们封装了一个简单的clear方法,让用户可通过指定类型(local或session)清空所有存储的数据。

示例说明

存储

store.set('name', '张三');
store.set('age', 18);
store.set('users', [{name:'li',age:18},{name:'zhang',age:19}]);
store.set('user', {name:'li',age:18});

在如上代码中,我们存储了四组数据,其中nameage存储了值类型,usersuser存储了对象类型,数据已成功存储在localStorage中。

获取

console.log(store.get('name')); // 张三
console.log(store.get('age')); // 18
console.log(store.get('city', '深圳')); // 深圳
console.log(store.get('users')); // [{name:'li',age:18},{name:'zhang',age:19}]
console.log(store.get('user')); // {name:'li',age:18}

在如上代码中,我们通过指定key获取了存储的值,nameage对应的值被成功获取,city键不存在,所以默认返回了深圳。usersuser都是存储的对象类型,所以通过get方法获取到了转换后的对象。

删除/清空

store.remove('name');
console.log(store.get('name')); // null

store.clear();
console.log(store.get('age')); // null

在如上代码中,我们首先删除了name对应的值,返回null,接下来清空了localStorage中的所有值,并再次获取,返回值为null。

总结

在本文中,我们手写了一个前端存储工具库,支持存储值类型、对象类型以及数组类型的数据。希望通过本文的介绍,开发者可以更好地运用前端存储,提高代码的开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript手写一个前端存储工具库 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 浅谈Vue单页面做SEO的四种方案

    方案一:使用预渲染 预渲染是一种将 SPA 应用在服务器端对页面进行完全渲染,然后将渲染好的 HTML 文件返回给客户端的技术。适用于 SEO 需求比较简单的情况。具体步骤如下: 安装插件 prerender-spa-plugin ,并在 webpack 配置中进行设置; 对于每个需要预渲染的路由,设置它们对应的 meta 信息,这些 meta 熟悉在 he…

    JavaScript 2023年6月11日
    00
  • JavaScript变量基本使用方法实例分析

    首先我们需要理解什么是JavaScript变量,变量是一个容器,用于存储数据值。在JavaScript中创建变量时需要使用var、let或const关键字进行声明。 声明变量 var变量 使用var声明的变量在声明的时候没有值,我们可以在后面对其进行赋值,也可以在声明时直接赋值。var有全局作用域和函数作用域两种,而且var可以被重复声明。 var a = …

    JavaScript 2023年5月27日
    00
  • JavaScript中常用的验证reg

    下面是详细讲解“JavaScript中常用的验证reg”的完整攻略。 正则表达式简介 正则表达式是一种描述性的语言,用于描述字符的模式匹配的规则。它通常被用于搜索、替换操作以及表单验证等场景中。 JavaScript中的正则表达式被表示为一个正则表达式对象,可以通过RegExp()构造函数创建。正则表达式对象包括一个模式和一些标记,用于指定匹配的方式。 基本…

    JavaScript 2023年6月10日
    00
  • 浅谈Vue使用Elementui修改默认的最快方法

    下面我来详细讲解如何使用Element UI修改Vue的默认主题样式。 安装 Element UI 首先需要安装Element UI,可以通过npm安装: npm install element-ui -S 引入 Element UI 在Vue项目的main.js文件中,引入Element UI的样式文件和js文件: import Vue from ‘vue…

    JavaScript 2023年6月10日
    00
  • vue前端路由以及vue-router两种模式实例详解

    Vue前端路由和Vue-Router两种模式实例详解 前置知识 在深入理解本文内容前,你需要掌握以下技术: Vue.js的基础知识 编写和理解Vue组件 熟悉Vue.js中template、script和style标签三者之间的关系 Vue前端路由 前端路由是一种在单页面应用程序(SPA)中切换视图的技术。一般情况下,前端路由的核心技术是修改浏览器url,以…

    JavaScript 2023年6月11日
    00
  • JS实现简单网页倒计时器

    下面我将详细讲解一下如何通过JS实现简单网页倒计时器。 1. 首先,我们需要创建一个HTML页面 在HTML文件中,我们需要定义一个显示倒计时的区域,并为它设置一个id,例如: <div id="countdown"></div> 2. 然后,在JavaScript代码中,我们需要定义倒计时的时间和计时器函数 例如…

    JavaScript 2023年5月27日
    00
  • JavaScript判断数组成员的几种方法

    下面是“JavaScript判断数组成员的几种方法”的完整攻略。 判断数组成员的几种方法 使用 JavaScript 判断一个变量是否为数组是非常重要的操作。下面介绍几种判断数组成员的方法。 1. instanceof 使用 instanceof 运算符可以判断一个变量是否为某个类的实例。因为在 JavaScript 中,所有的数组都是 Array 类的实例…

    JavaScript 2023年5月27日
    00
  • JavaScript DOM学习第一章 W3C DOM简介

    JavaScript DOM(Document Object Model)是用于描述文档的抽象表示形式的编程接口,它定义了一组标准对象,这些对象可以与HTML、XML或XHTML文档的元素、文本节点和属性进行交互。 本文主要介绍 W3C DOM (World Wide Web Consortium DOM)的基础知识,包括DOM的版本、DOM树结构、DOM节…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部