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日

相关文章

  • JavaScript常用标签和方法总结

    针对这个话题,我准备了以下完整攻略。 JavaScript常用标签和方法总结 标签 在JavaScript中,我们通常使用以下标签: \<script> – 嵌入JavaScript代码的标签,可以放在HTML的\<head>或\<body>中。 \<button> – 创建一个按钮元素,可以用JavaScri…

    JavaScript 2023年5月18日
    00
  • 原生js jquery ajax请求以及jsonp的调用方法

    下面是详细讲解“原生js jquery ajax请求以及jsonp的调用方法”的完整攻略: 原生js ajax请求 原生js的ajax请求可以通过XMLHttpRequest对象实现。以下是ajax请求的基本流程: 创建一个XMLHttpRequest对象。 var xhr = new XMLHttpRequest(); 发送请求。 xhr.open(met…

    JavaScript 2023年5月27日
    00
  • JavaScript中常用的数组操作方法总结

    JavaScript中常用的数组操作方法总结 在JavaScript中,数组是一种非常常见的数据类型。本文将对JavaScript中常用的数组操作方法进行总结,方便读者快速掌握和使用。 创建数组 创建一个空数组: var arr = []; 创建一个有元素的数组: var arr = [1, 2, 3]; 数组的基本操作 获取数组长度 使用length属性获…

    JavaScript 2023年5月18日
    00
  • JS实现带阴历的日历功能详解

    关于“JS实现带阴历的日历功能详解”这个话题,我可以提供以下完整攻略: 简介 该功能主要是通过JS编写代码来实现,主要涉及到公历转农历的计算及日历界面的渲染。实现的目标是在常规的日历功能基础上增加阴历信息的显示,并支持选择日历日期导航切换。 实现步骤 1.公历转农历计算 公历转农历的计算主要涉及到对阳历年月日的解析和推算、传统农历基础数据的读取和查表等。我们…

    JavaScript 2023年5月27日
    00
  • JSON 数据格式详解

    JSON 数据格式详解 在现代 Web 开发中,数据交换是至关重要的一部分。而 JSON (JavaScript Object Notation) 已被广泛用于此。本文将详细介绍 JSON 的格式以及如何使用它进行数据交换。 什么是 JSON JSON 是一种文本格式,它是由 JavaScript 对象表示法衍生而来。JSON 是轻量级的数据交换格式,易于阅…

    JavaScript 2023年5月27日
    00
  • javascript中break,continue和return语句用法小结

    接下来我将为你详细讲解“JavaScript中break,continue和return语句用法小结”。 1. break语句 在循环结构中,break语句可以让程序停止当前循环并跳出循环结构。在for循环和while循环中,break语句的使用方法相同。 示例1 下面的示例演示如何在for循环中使用break语句,当循环到i为2时,停止循环并跳出循环结构。…

    JavaScript 2023年5月28日
    00
  • JS数组求和的几种常见方法总结

    我将为您详细讲解“JS数组求和的几种常见方法总结”的完整攻略。 一、直接求和 使用for循环遍历整个数组,将数组中的元素加起来,最后返回该数组的总和。 function sum(array) { var total = 0; for (var i = 0; i < array.length; i++) { total += array[i]; } re…

    JavaScript 2023年5月27日
    00
  • Javascript中的匿名函数与封装介绍

    Javascript中的匿名函数与封装介绍 Javascript中的匿名函数和封装是两个非常重要的概念。使用匿名函数可以避免全局变量污染,而封装则可以保护代码,避免不必要的干扰和修改。本文将详细讲解Javascript中的匿名函数和封装,以及如何使用它们来提高你的代码质量和安全性。 匿名函数 匿名函数是Javascript中的一种特殊函数,它没有函数名,只有…

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