
javascript
文章平均质量分 84
鎈卟誃筅甡
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JavaScript设计模式 -- 迭代器模式
迭代器模式属于行为型设计模式,其主要思想是将遍历集合的责任封装在迭代器对象中,客户端通过统一的迭代器接口逐个访问集合中的元素,而无需了解集合的内部结构。这样做可以使集合与遍历算法分离,进而提高系统的灵活性和可维护性。在 JavaScript 中,ES6 引入了内置的迭代器协议(Iterator Protocol)和生成器(Generator),使得实现迭代器变得非常方便。即便如此,自定义迭代器的设计思想依然适用于各种编程语言和场景。有时我们需要反向遍历一个集合。下面示例展示如何实现一个反向迭代器。原创 2025-02-17 14:23:26 · 1234 阅读 · 0 评论 -
JavaScript设计模式 -- 状态模式
状态模式是一种行为型设计模式,其主要思想是将对象在不同状态下的行为封装到不同的状态类中,并通过上下文(Context)对象维护当前状态。当上下文状态发生变化时,它会将请求委托给当前状态对象,从而使得对象的行为随着状态的改变而改变。例如,一个交通信号灯对象,根据当前状态(红灯、绿灯、黄灯)的不同,会执行不同的操作;而一个自动售货机在“无硬币”、“有硬币”和“售出商品”等状态下,其响应行为也各不相同。状态模式通过分离状态逻辑,使得代码更易维护和扩展。原创 2025-02-17 14:18:48 · 1281 阅读 · 0 评论 -
JavaScript设计模式 -- 观察者模式
观察者模式是一种行为型设计模式,其主要目的是实现对象间的解耦。当一个对象(被观察者、Subject)的状态发生变化时,所有依赖于它的对象(观察者、Observer)都会收到通知,并自动更新。这种模式广泛应用于事件驱动、UI 数据绑定、实时数据推送等场景。例如,在前端开发中,当数据模型变化时,视图(观察者)需要自动更新;在实时系统中,当数据源更新时,所有订阅了该数据的组件都能即时获得更新。观察者模式通过建立一对多的依赖关系,使得对象间的状态更新和通知变得简单而灵活。原创 2025-02-14 10:14:11 · 1522 阅读 · 0 评论 -
JavaScript设计模式 -- 外观模式
外观模式属于结构型设计模式,其核心思想是为多个复杂子系统提供一个统一的接口(外观),从而让客户端无需了解内部实现细节即可调用系统功能。外观模式不仅能简化调用流程,还能使系统的内部变化对客户端透明,便于后续扩展和维护。外观模式通过为复杂系统提供一个统一而简洁的接口,有效降低了客户端与各子系统之间的耦合,使得系统调用更加直观和易于维护。本文通过家庭影院、电子商务、网络请求聚合、游戏初始化和跨平台资源加载五个示例,展示了外观模式在不同场景下的应用。原创 2025-02-14 10:10:14 · 1158 阅读 · 0 评论 -
JavaScript设计模式 -- 代理模式
代理模式是一种结构型设计模式,其核心思想是在访问目标对象(真实对象)时,通过一个中间层(代理对象)来控制对真实对象的访问。代理对象与真实对象具有相同的接口,因此客户端无需改变代码即可使用代理对象。延迟加载:在真正需要使用对象时才创建或加载对象(虚拟代理)。权限校验:在调用真实对象方法前进行安全性检查(保护代理)。缓存:对真实对象的调用结果进行缓存,提高系统性能(缓存代理)。日志记录和监控:记录对真实对象的调用情况,便于调试和监控。原创 2025-02-13 08:51:37 · 1367 阅读 · 0 评论 -
JavaScript设计模式 -- 装饰者模式
装饰者模式属于结构型设计模式,它的核心思想是在运行时将对象嵌入到封装对象中,以扩展对象的行为而无需修改原有对象。通过这种方式,可以在保持对象接口不变的情况下,为对象增加额外的功能。在不改变对象接口的前提下,动态地给对象添加功能。需要在多个独立的装饰中灵活组合扩展对象行为时。通过装饰者避免生成大量子类,从而降低系统的复杂性。装饰者模式提供了一种在运行时为对象动态扩展功能的优雅方案。通过将功能分解成多个独立的装饰者,我们可以避免创建大量子类,并灵活地组合和扩展对象行为。原创 2025-02-13 08:41:12 · 1052 阅读 · 0 评论 -
JavaScript设计模式 -- 适配器模式
适配器模式是一种结构型设计模式,它的核心思想是通过一个中间层(适配器)将一个类的接口转换成客户期望的另一个接口,从而让原本接口不匹配的类能够一起工作。集成遗留系统:对接老系统时,接口可能与新系统不兼容;第三方库封装:使用外部库,但接口与项目需求不匹配;数据转换:不同数据格式之间的转换处理。适配器模式既可以通过对象适配器(基于组合)实现,也可以通过类适配器(基于继承,多用于支持多重继承的语言)实现。由于 JavaScript 不支持多重继承,所以一般采用对象适配器的方式。原创 2025-02-12 16:34:33 · 1357 阅读 · 0 评论 -
JavaScript设计模式 -- 单例模式
单例模式的核心思想是保证一个类只有一个实例存在,并提供一个全局访问点来获取该实例。这样可以防止重复创建对象,节省资源,同时也便于全局共享数据或状态。单例模式的特点:唯一性:在系统中只有一个实例存在。全局访问:提供一个全局访问点,让其他对象能够轻松地获取这个实例。延迟实例化:通常采用懒加载方式,只有在第一次使用时才创建实例。单例模式是一种简单但十分有用的设计模式,通过确保全局唯一实例,可以为配置管理、日志记录、事件总线、数据库连接等场景提供一致的解决方案。原创 2025-02-11 15:02:51 · 1097 阅读 · 0 评论 -
JavaScript设计模式 -- 工厂模式
工厂模式属于创建型设计模式,其核心思想是将对象的创建过程封装起来,让调用者只需关注产品接口,而无需了解具体实现。这样可以降低系统各模块之间的耦合度,使得扩展和维护更加方便。简单工厂模式:由一个工厂类根据参数创建不同的产品实例;工厂方法模式:通过定义抽象工厂接口,让子类决定实例化哪一个具体产品;抽象工厂模式:用于创建一系列相关或相互依赖的产品。接下来,我们分别介绍这些模式在 JavaScript 中的实现,并结合多种场景给出示例。工厂模式通过封装对象创建逻辑,使得代码具有更好的解耦性和扩展性。原创 2025-02-11 14:55:39 · 1286 阅读 · 0 评论 -
Vuex 的使用和原理详解
Vuex 是一个专为 Vue.js 应用程序设计的状态管理模式,采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。单一状态树:整个应用的状态存储在一个对象中。可预测的状态变更:只有通过明确的规则(Mutation)才能改变状态。插件机制:支持插件的扩展。state: {user: null // 用户信息},},},actions: {// 模拟登录请求resolve();}, 1000);});原创 2024-12-24 09:44:29 · 1132 阅读 · 0 评论 -
一文读懂:高阶函数
高阶函数(Higher-Order Functions)的概念最早来源于数学中的函数式编程范式,指的是以其他函数为输入或输出的函数。在计算机科学中,这一思想被引入编程语言,用于增强代码的抽象能力。除了 JavaScript,许多现代编程语言(如 Python、Ruby、Haskell 等)都支持高阶函数。在函数式编程语言中,高阶函数是核心组件,而在多范式语言中,它们通常用于简化代码逻辑或处理复杂的函数组合。原创 2024-12-19 15:06:56 · 1158 阅读 · 0 评论 -
深入解析 requestAnimationFrame 和 requestIdleCallback
是用于创建高性能动画的 API,它的主要特点是与显示器的刷新频率(一般为 60Hz)同步,从而保证动画的流畅性和稳定性。这些操作需要在 16.66ms 内完成(60FPS)以避免卡顿。是一个允许在浏览器空闲时间内执行低优先级任务的 API。这种分工可以帮助开发者构建性能优化的 Web 应用。原创 2024-12-10 14:54:07 · 669 阅读 · 0 评论 -
手写call、apply、bind方法
手写call、apply、bind方法原创 2024-12-04 09:08:47 · 298 阅读 · 0 评论 -
call apply bind原理和使用
它们主要用于函数上下文的转换或借用其他对象的方法。是 JavaScript 中用来显式改变函数 this。当一个对象没有某方法时,可以借用其他对象的方法来使用。当参数是动态生成的数组时,在事件处理函数中,使用。原创 2024-12-04 08:57:31 · 311 阅读 · 0 评论 -
一文读懂 浏览器的缓存机制
HTTP缓存控制字段通过精确控制资源的缓存行为,有助于提升网页的加载速度、减少网络带宽的消耗和降低服务器的负载。在实际应用中,这些字段可以单独使用,也可以组合使用,以实现复杂的缓存策略。原创 2024-09-10 15:41:52 · 1110 阅读 · 0 评论 -
JavaScript数据精度丢失的底层原理及解决方案
IEEE 754标准是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。它定义了表示浮点数的格式(包括负零、-0、无穷大(Inf)和非数值(NaN))、特殊数值,以及这些数值的运算规则。IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,较少使用)和延伸双精确度(79比特以上,通常以80位实现)。其中,双精确度是JavaScript中数字的主要表示方式。原创 2024-09-09 22:11:17 · 1096 阅读 · 0 评论