JavaScript
文章平均质量分 61
毛小星
这个作者很懒,什么都没留下…
展开
-
ts封装localStorage和sessionStorage
ts封装localStorage和sessionStorage我们经常需要在 localStorage 或者 sessionStorage 去持久化存储值,但是 localStorage 和 sessionStorage 提供的 api 在处理对象的时候,往往需要 stringify 去转成字符串去存储,再通过 parse 去转换回来,这样是比较麻烦的,我们就可以将这些操作封装成函数去调用const useStorage = ($storage) => { /** * 根据 key 值获原创 2021-07-03 11:30:03 · 1392 阅读 · 1 评论 -
JavaScript 处理树 列表转树 遍历树 查找树
树的操作在前端的工作中占据了比较重要的位置,我总结了一些我平时处理树数据的方法情况一 将列表转换成 tree有的时候后端比较懒,不愿意处理树数据,给的是一个列表数据,这时候就需要前端将列表转换成 tree 数据// 列表数据const list = [ { id: 01, pid: null }, { id: 02, pid: null }, { id: 03, pid: 01 }, { id: 04, pid: 03 }, { id: 05, pid: 01 }, { id原创 2021-06-15 15:43:03 · 587 阅读 · 1 评论 -
前端模块化开发
模块化开发1. 模块化开发概述模块化开发目前是当下最重要的前端开发范式之一,模块化并不是一种技术,而是一种开发思想。模块化将我们的复杂的代码根据功能划分为不同的模块单独去维护,通过这种方式提升开发效率和降低维护成本。2. 模块化的演变过程早期的前端技术标准根本没有意识到前端应用能有今天这样的规模,所以很多设计上的遗留问题就导致今天去实现前端模块化会遇到很多问题。当然了,如今都被一些标准或者工具帮助我们解决了这些问题,但是它的演进过程是值得我们去思考的。stage1-文件划分最早期的前端模原创 2021-03-07 18:13:27 · 647 阅读 · 2 评论 -
彻底搞清楚 Iterator(遍历器)接口
彻底搞清楚 Iterator(遍历器)接口1. 什么是Iterator(遍历器)我们都知道 JavaScript 中对数组有很多种遍历方式,但是如果我们想像数组那样去遍历其他数据,我们该怎么办呢?Iterator遍历器就为我们提供了这种机制。Iterator 是一个接口,它为 JavaScript 中的各种数据结构提供了一种规范。任何数据结构只要部署了 Iterator 接口,那么我们就可以使用 for…of 遍历这个数据结构在 JavaScript 中部署了 Iterator 接口的有Array原创 2021-02-24 20:53:57 · 183 阅读 · 0 评论 -
函数式编程学习心得及教程
函数式编程前言如果你已经从事开发有一段时间了,肯定多少对’函数式编程’有一定的了解,很多人包括我自己在还没有深入了解函数式编程的时候,基本都会有一个误解,函数式编程就是用很多function函数去编程你的代码。最近正好我在学函数式编程,于是就想着写一篇文章去向一些像我一样的初学者去解释一下函数式编程。什么是函数式编程我们来看一下百度百科对函数式编程的定义:简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。它属于"结构化编程"的一种原创 2021-02-22 22:09:00 · 435 阅读 · 0 评论 -
浅拷贝和深拷贝
浅拷贝和深拷贝一、数据类型我们都知道JavaScript数据类型分为基本数据类型(String、Number、Boolean、Null、Undefined、Symbol,未来还会有BigInt)和引用数据类型(Object),当然Object还包括Date、function、Array、RegExp。基本数据类型和引用数据类型在存储方式上是有很大差别的。基本数据类型:变量名和值都存在栈内存中,是一对一的关系引用数据类型:变量名和一个指向值的地址存储在栈地址中,而值存储在堆内存中,是一对多的关系原创 2021-02-21 19:54:02 · 4900 阅读 · 0 评论 -
实现一个完整的发布订阅模式
实现一个完整的发布订阅模式前言发布-订阅模式是我们经常会接触的到的设计模式,它定义一个对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在 JavaScript 开发中,我们一般用事件模型来替代传统的发布-订阅模式现实生活中的发布订阅模式毛小星是一个球鞋爱好者,他最近在逛淘宝的时候,看上了一双芝加哥配色的 AJ One 篮球鞋,但是问过客服美眉被告知,这个配色的鞋已经售罄了。好在客服美眉告诉毛小星,不久后耐克公司还会复刻一批芝加哥配色的球鞋,但是具体什么时候原创 2021-02-17 21:54:14 · 1665 阅读 · 0 评论 -
实现Array.prototype.filter
Array.prototype.my_filter = function(fn, context) { let resArr = [] const me = this const ctx = context ? context : this // 判断上下文 if (typeof fn !== 'function') { throw new Error(`${fn} is not a function`) } me.forEach((i原创 2021-02-16 22:48:47 · 196 阅读 · 0 评论 -
实现Array.prototype.map
Array.prototype.my_map = function(fn, context) { let resArr = [] const me = this const ctx = context ? context : me // 定义上下文 if (typeof fn !== 'function') { throw new Error(`${fn} is not a function`) } me.forEach((item,原创 2021-02-16 22:47:26 · 252 阅读 · 0 评论 -
js数组去重的几种方法
数组去重的几种方法记录一些数组去重的方法,如果有错误的地方,还望指正1.利用es6中的Set()去重特性const arr = [1,2,3,6,8,2,9,5,6,4,9]function uniq(arr) { return [...new Set(arr)]}const resultArr1 = uniq(arr)console.log(resultArr1)2.利用includes或者indexOfconst arr = [1,2,3,6,8,2,9,5,6,4,9]f原创 2021-02-15 11:36:03 · 163 阅读 · 0 评论