04 2022 档案
js reduce用法详解
摘要:###前言 reduce() 方法对数组中的每个元素执行一个由您提供的reduce函数(升序执行),将其结果汇总为单个返回值。reduce方法可做的事情特别多,就是循环遍历能做的,reduce都可以做,比如数组求和、数组求积、数组中元素出现的次数、数组去重等等。 ###语法 arr.reduce(f
js FormData的使用
摘要:###概述 FormData对象的使用: 1,用一些键值对来模拟一系列表单控件: 把form中的所有元素的name和value组成一个QueryString 2,异步上传文件 ###使用 ####创建一个空对象实例 var myForm = new FormData(); ####使用已有的表单进行
设计模式(11) 策略模式
摘要:###策略模式 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 ####介绍
设计模式(10) 状态模式
摘要:###状态模式 在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 ####介绍 意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好
设计模式(9) 观察者模式
摘要:###观察者模式 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 ####介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
设计模式篇(8) 外观模式
摘要:###外观模式 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 ###
设计模式篇(7) 代理模式
摘要:###代理模式 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 ####介绍 意图:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如
js实现图片懒加载原理
摘要:##原理 图片懒加载是前端页面优化的一种方式,在页面中有很多图片的时候,图片加载就需要很多时间,很耗费服务器性能,不仅影响渲染速度还会浪费带宽,为了解决这个问题,提高用户体验,所以就出现了懒加载这种方式来减轻服务器的压力,优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能。 ##实
设计模式篇(6) 装饰器
摘要:###装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 我们通过下面的实例
设计模式篇(5) 适配器
摘要:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入
js实现深拷贝的几种方法
摘要:##JS 中深拷贝的几种实现方法 ###使用递归的方式实现深拷贝 //使用递归的方式实现数组、对象的深拷贝 function deepClone1(obj) { //判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝 var objClone = Array.isA
设计模式(4) 单例模式
摘要:##单例模式 ###前言 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可
设计模式篇(3) 设计原则
摘要:class AbstractDrink { getPrice() { return 1; } } class Fanta extends AbstractDrink { getPrice() { return 5; } } class CocaCola extends AbstractDrink {
设计模式篇 (2) 抽象工厂模式
摘要:#抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工
设计模式篇 (1) 工厂模式
摘要:#工厂模式 工厂模式(Factory Pattern)是 程序设计 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 ##介绍 意图:定义一个创建对象的
数据结构篇(9) 男默女泪 终于写完图了 图的实现和一些常用操作
摘要://顶点表节点 class Vertex { firstEdge: string = ''//指向第一个邻接边的指针 data: any//顶点域 outNum: number = 0//在无向图中表示与顶点邻接的边的数量,在有向图中为初度 inNum: number = 0//在有向图中为顶点的入
数据结构篇(8) 二叉树的一些基本操作实现
摘要:/** * parent: 双亲节点 * left: 左子节点 * right: 右子节点 */ interface TreeNode { left: TreeNode | null, right: TreeNode | null, data: any, count: number } class