- 博客(22)
- 收藏
- 关注
原创 解决深拷贝循环引用痛点:一篇看懂 WeakMap 实现方案
本文深入解析了JavaScript深拷贝中的循环引用问题及解决方案。文章首先通过实例说明循环引用的概念,指出普通递归深拷贝在处理自引用或互引用对象时会导致栈溢出。随后提出核心解决思路:使用WeakMap作为缓存容器记录已拷贝对象,避免重复递归。文章详细展示了带循环引用检测的深拷贝实现代码,并通过测试验证了该方案能正确处理自引用、互引用等情况,同时保持拷贝对象的独立性。最终总结指出,WeakMap因其弱引用特性成为解决循环引用问题的最优选择。
2025-12-30 23:40:16
230
原创 JS 链表详解:基于固定示例的单向/双向链表与中间节点删除实
本文基于固定链表示例,详细解析了JavaScript中单向链表和双向链表的核心结构差异。单向链表仅含next指针,需遍历记录前驱节点才能删除中间节点;双向链表通过prev指针可直接获取前驱节点,删除操作更高效。通过实战代码演示了两种链表删除中间节点(node3)的具体实现:单向链表需O(n)时间查找前驱,而双向链表只需O(1)时间调整指针。文章还对比了链表与数组在内存布局和操作效率上的核心差异,帮助开发者深入理解链表特性及应用场景。
2025-12-28 21:33:56
751
原创 从零手写简单版Promise:吃透核心原理,为进阶打基础
本文介绍了如何从零开始手写一个简单版Promise,重点讲解了Promise的核心原理和基础实现。文章首先明确了Promise的四个核心特性:状态不可逆、结果保存、resolve/reject触发状态变更以及then方法接收结果。然后通过代码示例,详细拆解了Promise构造函数的初始化、resolve/reject函数定义、executor执行异常处理等核心逻辑,并实现了then方法的基础版本。最后通过成功和失败两种场景的测试代码,验证了这个简单版Promise的基本功能。本文适合前端初学者理解Promi
2025-12-24 22:34:43
302
原创 深入理解防抖与节流:从原理到实战(附可直接复用代码)
本文深入解析前端开发中优化高频事件的两种核心方案——防抖(Debounce)和节流(Throttle)。防抖的特点是触发事件后延迟执行,重复触发则重置计时;节流则是固定时间内只执行一次。文章详细拆解了两种方法的经典实现代码,包括闭包的应用、this指向处理和参数传递等关键点。通过输入框搜索、滚动加载和按钮防重复点击三个典型场景,展示了如何在实际项目中应用这些技术。最后总结了二者的核心区别和适用场景,并提供了使用时的注意事项,帮助开发者根据具体需求选择合适方案来提升页面性能。
2025-12-23 21:53:58
913
原创 一文了解 Cookie、localStorage、sessionStorage的区别与实战案例
浏览器存储方案对比与应用 Cookie、localStorage和sessionStorage是前端开发中常用的三种浏览器存储方案,它们在存储容量、生命周期、作用域等方面存在显著差异: Cookie:容量约4KB,可设置过期时间,自动随HTTP请求发送,适合存储登录状态等需与服务器交互的数据 localStorage:容量约5MB,永久存储,仅JS可访问,适合长期保存用户偏好(如主题设置) sessionStorage:容量约5MB,会话级存储(关闭标签页即清除),适合暂存表单中间数据等临时信息 在Vue项
2025-12-22 22:25:37
567
1
原创 一文搞懂事件冒泡与阻止方法:event.stopPropagation() 实战指南
文章摘要:事件冒泡与阻止方法实战指南 本文深入讲解DOM事件流中的冒泡机制及其应用场景。首先解释事件冒泡概念(事件从目标元素向上传播触发祖先元素同名事件),然后分析阻止冒泡的必要性(如弹窗、菜单等组件需要精准触发事件)。重点对比两种阻止方法:event.stopPropagation()(标准方法)和event.cancelBubble=true(IE兼容方法),并通过三个实战案例(弹窗组件、嵌套菜单、表单按钮)演示具体应用。最后指出阻止冒泡与事件委托的关系,帮助开发者掌握精准控制事件流的技巧。(149字)
2025-12-21 21:56:52
690
原创 深入理解 JavaScript 垃圾回收机制与内存泄漏防范
JavaScript 垃圾回收与内存泄漏防范指南 本文深入解析JavaScript内存管理机制,重点介绍: 垃圾回收原理:主流标记清除算法及其优化策略(分代/增量/并行回收) 内存泄漏危害:导致性能下降、页面卡顿甚至崩溃 常见泄漏场景:全局变量、闭包、未清除的定时器/事件监听、DOM引用 检测方法:使用Chrome DevTools的Memory/Performance面板分析内存变化 防范措施:及时释放引用、使用WeakMap/WeakSet、规范事件管理 掌握这些知识能有效提升代码健壮性,避免内存问题影
2025-12-19 22:29:01
934
原创 手撕call/apply/bind:从ES6用法到手写实现,吃透this指向核心
🔥 手撕call/apply/bind:彻底掌握this指向 JavaScript中call、apply、bind是改变函数执行上下文的"三剑客"。它们本质上都是修改函数执行时的this指向,但在使用方式和执行时机上有重要区别: call:接收逗号分隔的参数列表,立即执行函数 apply:接收数组参数,立即执行函数 bind:返回新函数不立即执行,支持参数分批传递 手写实现的核心要点: call/apply:通过临时挂载函数到目标对象来改变this指向 bind:需要处理构造函数调用场
2025-12-18 20:44:35
711
原创 彻底搞懂JavaScript块级作用域与函数作用域:var、let、const的核心区别
本文深入解析JavaScript中函数作用域与块级作用域的区别,重点对比var、let、const的特性差异。函数作用域下var声明的变量会提升且不受代码块限制,而ES6引入的let/const实现了块级作用域,变量仅在其所在的花括号内有效。关键差异包括:作用域范围、变量提升行为、重复声明规则等。块级作用域解决了变量污染全局、循环闭包等经典问题。开发建议:优先使用const,需要修改时用let,避免使用var。理解这些概念能帮助开发者编写更安全、可维护的代码。
2025-12-17 22:49:26
639
原创 一篇文章了解 JavaScript 开发中函数与变量的优先级
摘要:本文解析JavaScript中函数与变量优先级的核心规则。通过三个典型场景对比函数声明、var变量和let/const变量的提升机制:1)函数声明优先于var变量;2)let/const的暂时性死区优先于函数声明;3)函数表达式等同于变量声明。文章用表格总结优先级顺序,并给出避免同名、优先使用let/const等实用建议。最后通过综合案例演示如何应用这些规则分析代码执行顺序,帮助开发者彻底理解提升机制,避免常见陷阱。
2025-12-16 22:48:52
701
原创 彻底搞懂 JS 数据类型:基本类型与引用类型的核心差异
JavaScript数据类型分为基本类型(Number、String等)和引用类型(Object、Array等),核心差异在于内存存储方式不同。基本类型直接存储在栈内存,赋值时复制实际值,变量间互不影响;引用类型实际值存在堆内存,变量存储引用地址,赋值时复制地址,变量共享同一对象。这种设计优化了性能,但可能导致修改互相影响。可通过深拷贝(如JSON序列化或递归复制)解决共享问题。理解这一机制是掌握原型链、闭包等概念的基础。
2025-12-15 22:11:51
787
原创 一文搞懂 JavaScript 原型链:从本质到实战应用
JavaScript 原型链是理解 JS 面向对象编程的核心机制。本文从构造函数、原型对象和实例对象的关系入手,解析了原型链的运作原理:通过 __proto__ 属性形成链式查找结构,实现属性和方法的共享继承。文章详细演示了原型链继承的实现方式,包括构造函数调用、原型指向调整和 constructor 修复等关键步骤,并指出原型链继承的潜在问题。最后强调 ES6 的 class 本质仍是基于原型链的语法糖。掌握原型链机制对深入理解 JavaScript 对象模型至关重要。
2025-12-14 22:21:58
688
原创 一文吃透 JavaScript Class:从基础语法到实战应用
JavaScript Class 是 ES6 引入的重要特性,它作为原型链的语法糖,使面向对象编程更加直观规范。文章从基础语法入手,详细讲解了 Class 的定义、构造函数、实例方法、静态方法、getter/setter 等核心概念,并通过代码示例展示了继承机制(extends)、方法重写和多态特性。特别强调了静态属性和方法的定义与使用,以及如何继承内置对象扩展功能。相比 ES5 的构造函数模式,Class 提供了更清晰的代码结构和更符合传统 OOP 的书写方式,是 JavaScript 开发中必须掌握的核
2025-12-13 23:31:41
877
原创 理解 Proxy 原理及如何拦截 Map、Set 等集合方法调用实现自定义拦截和日志——含示例代码解析
理解 Proxy 原理及如何拦截 Map、Set 等集合方法调用实现自定义拦截和日志——含示例代码解析
2025-12-12 23:53:41
276
原创 事件循环(Event Loop)详解:JavaScript 异步机制的核心
摘要:事件循环是JavaScript处理异步任务的核心机制,通过调用栈、宏任务队列和微任务队列协同工作。其执行顺序遵循"同步→微任务→宏任务"的循环规则:先执行同步代码,清空微任务队列,再执行一个宏任务,不断循环。典型示例展示了Promise微任务优先于setTimeout宏任务执行的特点,嵌套异步代码则遵循相同优先级规则。理解事件循环有助于掌握JavaScript异步编程的执行顺序,是前端开发的重要基础。
2025-12-11 21:26:05
470
微信小程序微信授权用户头像昵称获取规则调整对应
2022-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅