随笔分类 - javaScript
摘要:JavaScript实现一个红绿灯程序 这个题算是一个比较经典的面试题了,代码实现也很简单,下面我们就来看看是怎样实现的 setTimeout 版本 setTimeout 是 JavaScript 中的炸弹定时器,setTimeout 执行完就会立即被回收,那么我们就可以利用这个特点,在回收之前再去
阅读全文
摘要:ts封装localStorage和sessionStorage 我们经常需要在 localStorage 或者 sessionStorage 去持久化存储值,但是 localStorage 和 sessionStorage 提供的 api 在处理对象的时候,往往需要 stringify 去转成字符串
阅读全文
摘要:树的操作在前端的工作中占据了比较重要的位置,我总结了一些我平时处理树数据的方法 情况一 将列表转换成 tree 有的时候后端比较懒,不愿意处理树数据,给的是一个列表数据,这时候就需要前端将列表转换成 tree 数据 // 列表数据 const list = [ { id: 01, pid: null
阅读全文
摘要:var、let、const三种声明变量方式之间的差异 var声明的变量会挂载到window上,而let和const声明的变量不会 var a = 'foo' console.log(window.a) // foo let b = 'bar' console.log(window.b) // und
阅读全文
摘要:实现一个完整的发布订阅模式 前言 发布-订阅模式是我们经常会接触的到的设计模式,它定义一个对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在 JavaScript 开发中,我们一般用事件模型来替代传统的发布-订阅模式 现实生活中的发布订阅模式 毛小星是一个球
阅读全文
摘要:彻底搞清楚 Iterator(遍历器)接口 1. 什么是Iterator(遍历器) 我们都知道 JavaScript 中对数组有很多种遍历方式,但是如果我们想像数组那样去遍历其他数据,我们该怎么办呢?Iterator遍历器就为我们提供了这种机制。 Iterator 是一个接口,它为 JavaScri
阅读全文
摘要:浅拷贝和深拷贝 一、数据类型 我们都知道JavaScript数据类型分为基本数据类型(String、Number、Boolean、Null、Undefined、Symbol,未来还会有BigInt)和引用数据类型(Object),当然Object还包括Date、function、Array、RegE
阅读全文
摘要:JavaScript垃圾回收机制和性能优化 前言 我们都知道程序的运行需要一定的内存空间,且在运行过后就必须将不再用到的内存释放掉,否则就会出现下图中内存的占用持续升高的情况,一方面会影响程序的运行速度,另一方面严重的话则会导致整个程序的崩溃。 JavaScript中的内存管理 内存:由可读写单元组
阅读全文
摘要:函数式编程 前言 如果你已经从事开发有一段时间了,肯定多少对'函数式编程'有一定的了解,很多人包括我自己在还没有深入了解函数式编程的时候,基本都会有一个误解,函数式编程就是用很多function函数去编程你的代码。最近正好我在学函数式编程,于是就想着写一篇文章去向一些像我一样的初学者去解释一下函数式
阅读全文
摘要:我们在使用new去创建构造函数的时候会经历四个步骤: 创建一个新对象 将构造函数的作用域赋值给新对象(因此this就指向了这个新对象) 执行构造函数中的代码(为这个新对象添加属性) 返回新对象 下面看一下代码实现: function my_new(Super, ...args) { const ob
阅读全文
摘要:Array.prototype.my_reduce = function(callBack, initValue) { if (typeof callBack !== 'function') { // 方法错误处理 throw new Error(`${callBack} is not a func
阅读全文
摘要:首先定义一下测试数据 const test = function(age, sex) { console.log(this.name, age, sex, 'test') } const person = { name: '毛小星' } 实现call方法 下面将自定义的call方法写在Functio
阅读全文
摘要:Array.prototype.my_filter = function(fn, context) { let resArr = [] const me = this const ctx = context ? context : this // 判断上下文 if (typeof fn !== 'f
阅读全文
摘要:Array.prototype.my_map = function(fn, context) { let resArr = [] const me = this const ctx = context ? context : me // 定义上下文 if (typeof fn !== 'functi
阅读全文

浙公网安备 33010602011771号