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

yizhihongxing

标题: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日

相关文章

  • Javascript读取json文件方法实例总结

    我们来详细讲解一下“Javascript读取json文件方法实例总结”。 什么是 JSON 文件 JSON 是一种轻量级的数据交换格式,使用易读易写的文本格式,可用于保存和传输结构化数据。JSON 中的键值对使用双引号包围,各个键值对之间用逗号分隔,而整个对象则使用花括号包围。以下是一个 JSON 对象的例子: { "name": &qu…

    JavaScript 2023年5月27日
    00
  • js获取ajax返回值代码

    接下来我将详细讲解JS获取AJAX返回值的完整攻略。 准备工作 在使用JS获取AJAX返回值之前,需要先引入jQuery库,因为AJAX主要是使用jQuery库的ajax方法来实现的。在头部引入jQuery库的代码如下: <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/j…

    JavaScript 2023年6月11日
    00
  • 扒一扒JavaScript 预解释

    下面是关于 “扒一扒JavaScript 预解释” 的完整攻略: 什么是JavaScript预解释? JavaScript是一种解释型语言,它在运行前必须进行解释并执行代码,而预解释则是在JavaScript代码执行之前进行一遍解释的过程。预解释其实是JavaScript解释器在读取JavaScript代码时,先查找所有定义的变量、函数,并且把这些变量、函数…

    JavaScript 2023年5月18日
    00
  • javascript的正则匹配方法学习

    JavaScript的正则匹配方法学习 正则表达式是一种用于匹配字符串的模式,它在JavaScript中非常常见。在本文中,我们将介绍怎样在JavaScript中使用正则表达式进行字符串匹配。 1. 创建正则表达式 在JavaScript中,可以使用正则表达式字面量或RegExp对象来创建正则表达式。正则表达式字面量可以使用斜杠”/”包围,其中间为正则表达式…

    JavaScript 2023年6月10日
    00
  • JavaScript中好用的解构用法详解

    JavaScript中好用的解构用法详解 什么是解构 在JavaScript中,解构是一种使得能够从数组或者对象中快速提取值、封装成一个变量或变量组的语法。 数组解构 数组的解构就是对数组的值进行“一一对应的提取”操作 基本用法 基本语法如下: let [a, b, c] = [1, 2, 3]; console.log(a); //1 console.lo…

    JavaScript 2023年5月18日
    00
  • jQuery通过写入cookie实现更换网页背景的方法

    jQuery 通过写入 cookie 实现更换网页背景的方法,实际上就是利用 cookie 存储用户选择的网页背景样式及其对应的 CSS 样式类名,在页面加载时根据 cookie 中存储的样式类名来设置页面背景样式。 具体实现步骤如下: 1. HTML 结构 在 HTML 文档的 head 标签中引入 jQuery 库和自定义 js 文件。 <!DOC…

    JavaScript 2023年6月11日
    00
  • 通过Javascript读取本地Excel文件内容的代码示例

    要通过Javascript读取本地Excel文件内容,我们可以使用以下步骤: 创建一个input元素,设置它的type属性为file,并将它添加到HTML页面中。 当用户选择Excel文件后,我们可以通过Javascript获取到该文件,可以使用FileReader对象将文件读取为二进制数据。 将二进制数据转换为Uint8Array类型的数组,并使用XLSX…

    JavaScript 2023年5月27日
    00
  • js流动式效果显示当前系统时间

    实现JS流动式效果显示当前系统时间,可以通过以下步骤实现: 第一步:获取当前时间 JavaScript中可以通过Date()对象获取当前的系统时间。 var now = new Date(); var hour = now.getHours(); //小时 var minute = now.getMinutes(); //分钟 var second = no…

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