⚡ JavaScript 学习路线
231 个互动教程
JavaScript 入门 — Hello World
认识JavaScript,写出第一个程序
JavaScript 变量与数据类型
学习 let/const 声明变量,理解基本数据类型
JavaScript 运算符
学习算术、比较、逻辑运算符
JavaScript 条件判断
学习 if/else if/else 和 switch 语句
JavaScript 循环 — for 与 while
学习 for 循环和 while 循环
JavaScript LocalStorage
学习浏览器本地存储 API
JavaScript 错误处理
学习 try/catch/finally 处理异常
JavaScript JSON 处理
学习 JSON.stringify 和 JSON.parse
JS Let 与 Const
理解 let/const/var 的区别和作用域
JS Switch 语句
学习 switch/case/default 多分支判断
JS 字符串方法
学习 slice/substring/replace/split/trim 等
JS 数字与Math
学习数字方法和Math对象
JS 日期处理
学习 Date 对象和日期格式化
JS 类型转换
理解隐式和显式类型转换
JS 定时器
学习 setTimeout/setInterval
JS 调试技巧
学习 console.log/table/group/error 和 debugger
JS 模板字符串
深入学习模板字符串和表达式
JS For 循环详解
学习 for/in、for/of 的区别
JS 三元运算符与??
学习 ?: 和 ?? 空值合并运算符
JS BigInt 大整数
学习BigInt
JavaScript 函数
学习函数定义、参数、返回值
JavaScript 数组操作
学习数组的增删改查和常用方法
JavaScript DOM 操作
学习用JS操作网页元素 — 选择、修改、创建
JavaScript 事件处理
学习 click/input/keydown 等事件监听
JavaScript 对象深入
学习对象的创建、方法、属性遍历、this
JavaScript 异步 — async/await
学习现代异步编程:Promise、async/await
JavaScript 类与继承
学习 ES6 class 语法和面向对象编程
JS 解构与展开运算符
学习 ... 展开运算符和解构赋值
JavaScript Fetch API
学习用 fetch 发送 HTTP 请求
JavaScript Map 与 Set
学习 ES6 的 Map 和 Set 数据结构
JavaScript 闭包
理解闭包——函数记住外部变量的能力
JavaScript 数组方法深入
学习 find/some/every/reduce/sort 等实用方法
JS 函数进阶
学习箭头函数、默认参数、rest参数
JS 回调函数
理解回调函数和异步
JS Promise 详解
深入理解 Promise 三种状态
JS 模块化
学习 import/export 组织代码
JS this 关键字
理解 this 在不同上下文中的指向
JS 正则表达式
学习 RegExp 进行模式匹配
JS DOM节点操作
学习 createElement/appendChild/remove
JS 浏览器BOM
学习 window/location/history/navigator
JS async/await 深入
深入理解async/await语法糖
JS 作用域与提升
理解全局/函数/块作用域和变量提升
JS Object 方法大全
学习 Object.keys/values/entries/assign/freeze
JS 综合实战: Todo应用
综合运用DOM、事件、数组创建Todo应用
JS Generator 生成器
学习function*
JS Proxy 代理
学习Proxy
JS Intl 国际化
学习Intl API
JS WebSocket
学习WebSocket
JS Canvas绘图
学习Canvas API
JS Observer API
学习IntersectionObserver
JS WeakMap/WeakSet
学习WeakMap
JS Symbol 符号
学习Symbol
JS 表单验证实战
学习表单验证
JS ES6模块深入
学习import/export
JS 数组方法进阶
学习splice/slice/sort
JS Web Workers
学习多线程
JS 解构赋值深入
学习解构
JavaScript 类与继承
class/extends/super/private字段/getter/setter
JavaScript Fetch API
fetch/async/POST/JSON/错误处理/超时
JavaScript 本地存储
localStorage/sessionStorage/Cookie/IndexedDB
JavaScript 标签模板字符串
ES6标签模板:函数处理模板字符串、styled-components原理、String.raw原始字符串、国际化i18n标签模板、SQL注入防护标签模板
JavaScript WeakMap 与 WeakSet
WeakMap(键必须是对象/弱引用/不可枚举/自动GC)和WeakSet的用途:私有数据存储、DOM节点元数据、防止内存泄漏、与Map/Set对比
JavaScript Promise 高级模式
Promise高级模式:Promise.allSettled/waiting/retry/timeout实现、取消Promise(AbortController)、Promise并发控制(限制同时进行的Promise数量)
JavaScript 迭代器与可迭代协议
JavaScript迭代器协议:Symbol.iterator、next(){value,done}、自定义可迭代对象、for...of循环、展开运算符...、解构的底层机制
JavaScript URL 与 URLSearchParams
URL API:new URL(url,base)解析、searchParams操作查询参数、URLSearchParams迭代、encodeURI vs encodeURIComponent、URL转义陷阱
JavaScript ArrayBuffer 与 TypedArray
二进制数据:ArrayBuffer原始缓冲区、TypedArray类型化数组(Int8/Uint8/Float32等)、DataView灵活读取(字节序)、与Blob/File的转换、WebSocket二进制消息
JavaScript Atomics 与 SharedArrayBuffer
多线程共享内存:SharedArrayBuffer跨Worker共享、Atomics原子操作(add/sub/compareExchange/wait/notify)、实现无锁数据结构、线程同步原语
JavaScript structuredClone 深拷贝
structuredClone():原生深拷贝、支持循环引用/Date/Map/Set/ArrayBuffer/Blob、不能拷贝函数/DOM节点、与JSON.parse(JSON.stringify())对比、lodash.cloneDeep
JavaScript Top-Level Await
Top-Level Await(顶级await):ES2022模块中直接使用await、模块执行顺序影响、与then()对比、动态导入import()配合、Node.js ESM支持条件
JavaScript Error Cause 错误链
Error Cause(ES2022):new Error(msg,{cause:originalError})、错误链追踪、AggregateError多个错误聚合、错误上报最佳实践
Service Worker 离线缓存
Service Worker:生命周期(install/waiting/activate/fetch)、Cache API缓存策略(Cache First/Network First/Stale While Revalidate)、离线PWA、Background Sync后台同步
Web Components 标准
Web Components三件套:Custom Elements自定义元素(customElements.define)、Shadow DOM隔离样式、HTML Templates模板、Lit轻量库、与React/Vue组件对比
WebGPU 下一代图形API
WebGPU入门:GPUAdapter/GPUDevice、Command Encoder命令编码、Render Pipeline渲染管线、Compute Shader通用计算、与WebGL对比(更低开销/支持通用GPU计算)
JavaScript requestIdleCallback 空闲任务
requestIdleCallback非关键任务调度:deadline.timeRemaining()剩余空闲时间、didTimeout超时强制执行、React调度器的底层API之一、与requestAnimationFrame的区别
JavaScript WeakRef 与 FinalizationRegistry
WeakRef弱引用(不阻止GC回收)、FinalizationRegistry对象被GC时回调、使用场景(缓存/资源清理)、警告:不要依赖GC时机(不同引擎行为不同)、WeakRef.deref()返回undefined表示已回收
Web Audio API 音频处理
Web Audio API:AudioContext音频上下文、OscillatorNode振荡器/ GainNode增益音量、BiquadFilterNode滤波器、AudioBuffer播放/录制、AnalyserNode频谱可视化(柱状图/波形图)
Web Speech API 语音识别与合成
Web Speech API:SpeechRecognition语音识别(lang中文/continuous连续/interimResults中间结果)、SpeechSynthesis语音合成(Voice选择/rate/pitch)、语音助手雏形
Geolocation API 地理位置
Geolocation API:navigator.geolocation.getCurrentPosition获取位置(经纬度/精度/海拔/速度)、watchPosition持续追踪、PositionOptions(enableHighAccuracy/timeout/maximumAge)、隐私要求HTTPS
Notification API 桌面通知
Web Notification API:Notification.requestPermission请求权限、new Notification(title,options)发送通知(body/icon/badge/tag/data)、notificationclick点击事件、Service Worker离线通知
WebRTC 实时通信入门
WebRTC(Web Real-Time Communication):RTCPeerConnection点对点连接、getUserMedia获取摄像头/麦克风、ICE Candidate( STUN/TURN) NAT穿透、DataChannel数据通道、视频会议应用架构
Web Animations API 动画
Web Animations API(WAAPI):element.animate(keyframes,options)比CSS动画更强大、Animation对象(play/pause/reverse/finish/cancel)、时间线Timeline、与requestAnimationFrame对比
AbortController 取消异步操作
AbortController:controller.abort()取消fetch请求(signal参数)、取消事件监听(addEventListener的signal选项)、取消流读取、与Promise和async/await集成模式
Page Visibility API 页面可见性
Page Visibility API:document.visibilityState(visible/hidden)、visibilitychange事件、根据页面可见性暂停/恢复动画/视频/轮询、节省资源、与Tab切换时的行为优化
BroadcastChannel 跨标签页通信
BroadcastChannel API:new BroadcastChannel(name)创建频道、postMessage发送/onmessage接收、同源多标签页通信(比localStorage storage事件更高效/比SharedWorker简单)
Screen Orientation API 屏幕方向
Screen Orientation API:screen.orientation.type获取方向(portrait-primary/landscape-primary)、orientationchange事件监听、screen.orientation.lock('landscape')锁定方向(需全屏)、移动端横竖屏适配
Barcode Detection API 条码检测
Barcode Detection API(Shape Detection API/Chrome):BarcodeDetector.detect()识别QR码/Code128/EAN-13/Data Matrix等格式、Canvas/ImageBitmap作为输入、移动端扫码应用
Compression Streams API 压缩解压
Compression Streams API:CompressionStream(gzip/deflate/deflate-raw)/DecompressionStream流式压缩解压、比第三方库(pako/zlib.js)更原生高效、HTTP Content-Encoding
Cookie Store API 异步Cookie
Cookie Store API(异步操作Cookie/替代document.cookie):cookieStore.set({name,value,expires,path,domain,secure,httpOnly, sameSite})/get/delete/getAll、change事件监听Cookie变更、Service Worker中也可使用
History API 浏览器历史
History API:pushState/replaceState修改URL不刷新(SPA路由基础)、popstate事件监听前进后退、state对象传递、history.back/forward/go、与hash路由对比(#hash vs /path)
Fullscreen API 全屏
Fullscreen API:element.requestFullscreen全屏请求、document.exitFullscreen退出、document.fullscreenElement检测全屏状态、fullscreenchange事件监听、CSS :fullscreen伪类全屏样式
Screen Wake Lock API 屏幕唤醒锁
Screen Wake Lock API:navigator.wakeLock.request('screen')获取唤醒锁防锁屏、WakeLockSentinel.release()释放、visibilitychange处理锁自动释放后重新获取
JavaScript Error 与堆栈追踪
Error对象深入:Error.captureStackTrace(V8)、error.stack堆栈字符串、Error Cause链、AggregateError多个错误聚合、自定义Error类(class MyError extends Error)、source-map堆栈映射到源码
Fetch API 进阶
Fetch进阶:AbortController取消请求、ReadableStream流式读取响应体、Response.clone()克隆、Service Worker中拦截fetch事件、fetch vs axios选型(原生API能力vs便捷性)
JavaScript Atomics.waitAsync 异步等待
Atomics.waitAsync()非阻塞等待(替代Atomics.wait阻塞):返回Promise<{value,async}>、Worker线程间异步同步、实现异步互斥锁/信号量
JavaScript 逻辑赋值运算符
ES2021逻辑赋值运算符:||=或赋值、&&=与赋值、??=空赋值(只在null/undefined时赋值)、与if判断赋值的语法糖对比、实际使用场景(默认值/惰性初始化)
JavaScript Promise.any 竞态成功
Promise.any(ES2021):首个fulfilled即返回/Promise.allSettled所有完成/Promise.race最快完成(无论fulfilled/rejected)、AggregateError所有都rejected时抛出、实际应用(多CDN取最快资源)
JavaScript 数字分隔符
ES2021数字分隔符:1_000_000可读的数字字面量、0b1010_0101二进制/0o7_777八进制/0xFF_FF十六进制/1_234_567n BigInt都支持、与小数部分(1.234_567)使用
JavaScript import.meta 模块元数据
import.meta元数据对象:import.meta.url当前模块URL(ESM)、import.meta.resolve()解析模块路径、import.meta.env(Vite注入环境变量)、import.meta.glob(Vite批量导入)、import.meta.dirname/filename(Node 21+)
JavaScript Temporal API 日期新标准
Temporal API(TC39 Stage 3/现代化日期时间API将替代Date):Temporal.PlainDate/Temporal.PlainTime/Temporal.PlainDateTime/Temporal.ZonedDateTime/Temporal.Duration/Temporal.Instant、不可变/时区安全/精确计算
Chart.js 图表库入门
Chart.js(Canvas图表库/响应式/动画):new Chart(ctx,{type:'bar/line/pie/doughnut/radar/polarArea/bubble/scatter',data:{labels,datasets},options})、数据集配置(backgroundColor/borderColor/tension/pointStyle)、plugin注册插件(
Day.js 轻量日期库
Day.js(Moment.js替代/2KB/不可变/链式API):dayjs()创建、.format()/.add()/.subtract()/.startOf()/.endOf()/.diff()/.isBefore()/.isAfter()、高级插件AdvancedFormat/UTC/Timezone/Duration/RelativeTime/LocalizedFormat/Custom
Lodash 实用工具库
Lodash(JavaScript工具库/函数式编程辅助):_.get/set对象安全深层访问、_.debounce/throttle防抖节流、_.cloneDeep深拷贝、_.groupBy/sortBy/uniq/uniqBy集合操作、_.merge/_.assign/_.defaultsDeep对象合并、_.chain链式调用、Tree Shaking按需导入lodash-es
RxJS 响应式编程入门
RxJS(Reactive Extensions for JS/Angular核心依赖):Observable冷(每次subscribe独立执行)/热(共享执行)、Subject(可多播)、pipe操作符(map/filter/mergeMap/switchMap/concatMap/exhaustMap/debounceTime/distinctUntilChanged/takeUntil)、S
JavaScript 正则环视
JS正则环视断言:正向前瞻(?=)/负向前瞻(?!)/正向后顾(?<=ES2018)/负向后顾(?<!)、密码强度验证(必须包含大小写字母+数字+特殊字符)、金额千分位格式化正则、零宽断言不消耗字符
JavaScript 展开运算符深入
展开运算符...深入:数组展开[...arr1,...arr2]合并/浅拷贝、对象展开{...obj1,...obj2}合并(同名属性后者覆盖)、函数调用展开Math.max(...nums)、可迭代对象展开到数组[...string]/[...Set]/[...Map]、剩余参数...args收集函数参数
JavaScript Set 与 Map 深入
ES6 Set/Map:Set(唯一值集合/add/delete/has/size/clear/遍历/交集new Set([...a].filter(x=>b.has(x)))/并集/差集、Map(键值对/键可以是任意类型对象函数/get/set/has/delete/size/entries遍历/forEach)、WeakSet/WeakMap弱引用GC友好/不可枚举
JavaScript 私有字段 # 语法
ES2022类私有字段:私有实例字段#field只能在类内部访问(真正的封装/不同于_前缀约定/语法级强制执行)、私有方法#method()、私有静态字段static #field、私有getter/setter get #x()/set #x(v)、与TypeScript private区别(编译时vs运行时)
JavaScript 静态初始化块
ES2022类静态初始化块:static{...}在类定义时执行一次(初始化静态字段/复杂逻辑)、多个static块按书写顺序执行、与static字段初始化器的区别(可写多行/异常处理/作用域)、替代IIFE初始化模式
JavaScript Error Cause 错误链
Error Cause(ES2022附带提案):new Error('msg',{cause:originalError})、聚合错误链(上层错误包装底层错误保留调用栈)、error.cause获取包装原因、Sentry/错误监控中展示完整错误链
JavaScript FinalizationRegistry
FinalizationRegistry对象(ES2021):对象被垃圾回收后的清理回调、register(target,heldValue,unregisterToken)注册、unregister取消注册、WeakRef.deref检查弱引用对象是否还存活、用例(清理共享资源/缓存过期但不要依赖GC时机)
JavaScript DataView 字节操作
DataView(灵活的ArrayBuffer读写/控制字节序):getInt8/getUint8/getInt16/getInt32/getFloat32/getFloat64 set系列、little-endian/big-endian参数、解析二进制文件格式(PNG/WAV头/BMP文件头解析实战)
JavaScript Base64 编码
Base64编码解码:btoa/atob(仅ASCII/Latin1)、TextEncoder+Uint8Array处理Unicode Base64、btoa(encodeURIComponent(str))中文兼容方案、data URL格式data:image/png;base64,...、ArrayBuffer↔Base64互转
JavaScript BigInt 深入
BigInt深入:与Number类型隔离(不能混用运算1n+1为TypeError)、位运算BigInt特殊规则、TypedArray不支持BigInt(BigInt64Array/BigUint64Array例外)、JSON不支持BigInt需自定义toJSON序列化
JavaScript flat() 与 flatMap()
Array.prototype.flat(depth)展平嵌套数组、flatMap先map再flat(1)一步完成、Infinity深度完全展平、展平稀疏数组跳过empty slot
JavaScript Online/Offline 检测
navigator.onLine检测网络状态在线/离线布尔值、online/offline事件监听window.addEventListener('online'/'offline')、网络状态在PWA中的应用(切换离线模式/排队离线操作待上线同步)
JavaScript Promise finally
Promise.prototype.finally(callback)无论fulfilled还是rejected都执行(清理loading状态/关闭连接/释放锁)、不影响Promise链值(除非在finally中抛异常/没有参数)、与then(onFulfilled,onRejected)第三个参数的对比
JavaScript String 方法大全
String方法大全:charAt/charCodeAt/at(index负索引)/includes/startsWith/endsWith/padStart/padEnd/repeat/slice/replace/replaceAll/match/matchAll/search/toUpperCase/toLowerCase/trim/split/localeCompare/concat
JavaScript 事件循环完全理解
彻底搞懂 Event Loop、Call Stack、微任务和宏任务,面试不再慌。
JavaScript Fetch API 完全指南
从零掌握 Fetch API,学会 GET/POST/文件上传/错误处理/超时控制。
JavaScript Web Workers 多线程
Web Workers简介(后台线程/不阻塞UI)、Worker创建与通信postMessage/onmessage、Shared Worker共享线程、Transferable Objects转移所有权(性能优化)、Service Worker对比
JavaScript IndexedDB 本地数据库
IndexedDB简介(浏览器端的NoSQL数据库)、打开数据库/创建对象仓库、事务transaction、增删改查(add/put/get/delete)、游标cursor遍历、索引加速查询
JavaScript 拖放 API Drag & Drop
HTML5拖放API:draggable属性、dragstart/dragover/drop事件、DataTransfer对象传递数据、自定义拖放预览、文件从桌面拖入网页、排序拖放列表
JavaScript 剪贴板 API Clipboard
Clipboard API:navigator.clipboard.writeText()写入文本、readText()读取、Permissions API请求权限、复制到剪贴板按钮实现、粘贴图片处理、兼容性处理document.execCommand
JavaScript 地理位置 Geolocation
Geolocation API:navigator.geolocation.getCurrentPosition获取位置、watchPosition持续追踪、Position对象(经纬度/精度/海拔)、错误处理、在百度/高德地图上标记位置
JavaScript History API 路由控制
History API:pushState/replaceState修改URL不刷新、popstate事件监听前进后退、SPA单页应用路由原理、scrollRestoration滚动位置恢复
JavaScript Observer API 交叉观察器
Intersection Observer API:监测元素进入/离开视口、无限滚动加载、图片懒加载、scroll-triggered动画、threshold阈值、rootMargin边距、性能优化
JavaScript MutationObserver DOM监听
MutationObserver API:监听DOM变化(子节点/属性/文本)、observe/disconnect、mutationList处理、与Mutation Events对比、增量DOM更新、表单自动保存
JavaScript ResizeObserver 元素尺寸监听
ResizeObserver API:监听元素尺寸变化(比window.resize更精确)、content-box/contentRect、unobserve取消监听、响应式组件、图表自适应重绘
JavaScript Symbol 详解
ES6 Symbol:创建唯一标识、Symbol.for全局注册表、Symbol.iterator/toPrimitive/toStringTag内置符号、Symbol作为对象键、不能for...in遍历
JS可选链操作符:安全访问嵌套属性
学习如何使用可选链操作符 ?. 安全地访问深层嵌套的对象属性,避免因中间属性为 null 或 undefined 而导致的错误。
JS空值合并操作符:为 null/undefined 提供默认值
学习空值合并操作符 ?? 的用法,区分它与逻辑或 || 的区别,并掌握如何为可能为 null 或 undefined 的变量设置安全的默认值。
JS正则表达式进阶:断言、分组与性能优化
深入学习正则表达式的高级特性,包括前瞻/后顾断言、捕获与非捕获分组、回溯控制以及性能优化技巧。
JS可选链操作符 (?.)
学习使用可选链操作符安全地访问深层嵌套的对象属性,避免冗长的空值检查。
JS空值合并运算符 (??)
掌握空值合并运算符,区分 null/undefined 与其他假值,为变量提供更精确的默认值。
JS数组方法精讲 (map/filter/reduce)
深入理解 map、filter、reduce 三个核心数组方法,学会用函数式思路处理数据。
JS正则表达式进阶:分组、前瞻与替换
学习正则表达式中的捕获组、非捕获组、前瞻断言以及高级替换模式。
JS Proxy 代理对象:拦截与自定义行为
探索 JavaScript Proxy 对象,学会拦截对象的读取、赋值、函数调用等操作,实现数据验证和日志记录。
JS Proxy 代理对象
理解 JavaScript Proxy 机制,通过拦截对象操作实现数据验证、日志记录、属性默认值等高级功能。
JS Proxy 代理对象
学习使用Proxy拦截对象操作,实现数据验证、日志记录和响应式编程
JS Proxy:拦截与自定义对象行为
探索JavaScript Proxy对象的强大功能,学习如何使用处理器对象拦截属性访问、赋值、函数调用等操作。
JS数组方法实战:map、filter、reduce 全掌握
通过实际案例深入学习 JavaScript 数组核心方法 map、filter、reduce 以及链式调用技巧。
Symbol 与 WeakRef:隐式契约的内存管理艺术
深度解析 Symbol 的隐藏元属性(如 Symbol.species、Symbol.match)以及 WeakRef 与 FinalizationRegistry 在高级内存管理中的协同用法,避免常见陷阱。
异步迭代器管道:从数据流到优雅的错误边界
深入 async generator 与异步迭代协议的组合模式,实现可中断的高级流式处理,并设计类似 RxJS 但完全基于原生语法的错误传播与回退机制。
Temporal API 实战:构建跨历法、自定义时区的调度器
利用 ECMAScript Temporal 提案的 Calendar 和 TimeZone 协议,编写一个支持伊斯兰历、希伯来历甚至虚构历法的任务调度引擎,并处理 DST 歧义。
Error Cause 链式追踪:如同 Monad 的错误传播模式
深入 Error 的 cause 属性与 AggregateError,模仿函数式编程的 Either Monad,构建一个可组合的故障上下文链路,实现多步操作失败时的根因聚合。
正则表达式的暗面:Lookbehind 与 Unicode 属性转义的联合诡计
通过负向/正向 lookbehind 搭配 Unicode 属性转义(\p{Script=Hiragana})处理多语言文本,解决在零宽断言中匹配变长字符的陷阱和性能优化。
Proxy 元编程:构造不可变路径数组与深层冻结
用 Proxy 拦截数组索引、length 及属性变更,实现一个看似可变但实际所有修改都返回新引用的‘不可变数组’,并自动对嵌套对象深度冻结。
跨线程内存共享:Transferable ArrayBuffer 的对象池设计模式
利用 SharedArrayBuffer 与 Atomics 在 Web Workers 间无拷贝传递数据,并设计一个动态对象池,解决多线程读写冲突、内存分片与扩容。
Stage 3 装饰器解剖:Context 对象与元数据注入
深入新版装饰器提案(2023)的 context 对象(kind、name、access、metadata),实现依赖注入、方法劫持和自动绑定的高级模式,绕过传统 Babel 插件。
Top-level await 与 ESM 缓存策略:可控的 async 模块加载
利用动态 import() 与模块缓存机制(Module Map),设计一个支持依赖图并行加载、超时控制、循环依赖检测的智能加载器。
Generator 双向通道:.return() 与 .throw() 在流控制中的高阶应用
超越简单的 yield 迭代,利用 Generator.prototype.return 和 .throw 实现外部注入的终止/异常信号,构建一个可暂停、可恢复、可清理的资源管理器。
Proxy 与元编程:拦截对象操作的终极武器
深入理解 Proxy 的 13 种捕获器,结合 Reflect 实现数据绑定、访问控制、历史记录追踪等高级模式。
Generator 与异步状态机:手动控制 async/await 底层逻辑
不依赖 async/await,用 Generator + Promise 构建自己的协程调度器,彻底理解事件循环与异步流程控制。
WeakRef 与 FinalizationRegistry:内存管理的隐秘角落
利用 WeakRef 创建弱引用,通过 FinalizationRegistry 监听垃圾回收,实现缓存、资源池与内存泄漏探测。
结构化克隆与可转移对象:高性能数据传递的隐藏 API
探索 structuredClone、MessageChannel 与 Transferable 对象,在 Worker 和主线程之间实现零拷贝传输。
尾调用优化与连续传递风格:写出永不栈溢出的递归
利用 ES6 尾调用优化(TCO)原理,结合 CPS 变换,将递归转化为常数栈空间,绕过调用栈限制。
Well-Known Symbols:改变语言内建行为的元接口
利用 Symbol.iterator、Symbol.toPrimitive、Symbol.match 等内置 Symbol,覆盖并定制 JavaScript 的默认行为。
Atomics 与 SharedArrayBuffer:多线程内存操作实战
在 Web Worker 间共享内存,利用 Atomics API 实现无锁编程、等待队列与高性能计数器。
函数组合与管道操作符:从 compose 到 |> 的未来语法
手动实现 compose/pipe 实用函数,并探索 Stage 2 管道操作符 |> 提案,打造可读性极强的数据流。
AggregateError 与自定义错误类:构建结构化错误体系
利用 AggregateError 聚合多个错误,创建 Error 子类,设计具有堆栈追踪、错误码和元数据的健壮错误系统。
Intl.Locale 与相对时间格式化:超越 toLocaleString 的国际化利器
利用 Intl.Locale 解析和操作区域设置,结合 Intl.RelativeTimeFormat 实现智能的时间描述。
闭包与回调地狱的优雅解构
深入闭包在异步回调中的典型表现,分析如何利用闭包特性避免回调地狱,并构建可复用的异步控制流。
用Symbol.iterator实现私有迭代器协议
探索Symbol如何定义内置迭代行为,亲手创建类数组对象的自定义迭代器,并利用Symbol.species控制派生对象类型。
Proxy实现模式匹配与数据验证
用Proxy对象构建一个声明式的模式匹配系统,对对象的属性访问、赋值进行拦截,实现结构校验和自动格式化。
Generator函数驱动的异步流控制引擎
深入Generator的暂停/恢复机制,手动实现一个类似co库的异步调度器,让Generator自动处理Promise。
TypedArray与ArrayBuffer:二进制协议解析实战
直接操作内存的TypedArray,解析自定义二进制数据包,实现一个轻量级序列化/反序列化工具。
WeakMap与WeakSet:内存泄漏的沉默终结者
揭秘WeakMap如何通过弱引用解决DOM节点或对象关联数据的内存泄漏,实现一个自动清理的事件监听管理器。
私有字段#与闭包:两种封装哲学的终极对决
比较ES2020私有字段(#)与传统闭包实现私有属性的差异,分析性能、继承、调试等维度的取舍。
Atomics与SharedArrayBuffer:浏览器中的多线程同步
利用SharedArrayBuffer在Worker间共享内存,并使用Atomics实现无锁同步,构建一个跨线程计数器。
RegExp.lastIndex与粘性匹配(y标志)的隐秘陷阱
深入正则表达式的lastIndex属性,分析全局(g)与粘性(y)标志的匹配行为差异,以及常见Bug根源。
Intl.Locale与多语言排序:超越toLocaleString的深度控制
利用Intl.Locale、Intl.Collator和Intl.DateTimeFormat构建一个完全可配置的国际化排序与格式化系统。
利用 Symbol 实现真正的对象私有属性与元编程
深入理解 Symbol 的不可枚举特性,用于创建隐藏属性、自定义迭代器及元编程模式。
代理撤销机制与一次性权限控制
探讨 Proxy.revocable 如何创建可撤销代理,用于临时访问权限、安全沙箱或一次性资源管理。
WeakRef 与 FinalizationRegistry:内存泄漏追踪与自动清理
利用弱引用和终结器监测对象何时被垃圾回收,管理大型缓存或 DOM 节点。
Atomics 与 SharedArrayBuffer:多线程安全数据交换
在 Web Workers 间使用共享内存和原子操作实现高性能同步,避免锁竞争。
尾调用优化与递归性能调优实战
剖析 JavaScript 引擎的尾调用优化条件,编写可被优化的递归函数以预防栈溢出。
Intl API 的高级本地化:复数规则、相对时间与自定义格式
超越日期/数字格式化,利用 Intl.PluralRules, Intl.RelativeTimeFormat 和 Intl.DisplayNames 构建国际化应用。
异步迭代器深度定制:从流式数据到中断控制
使用 AsyncIterator 和 AsyncGenerator 处理实时数据流、分页 API 和可取消迭代。
二进制数据操纵:TypedArray 视图与字节序处理
使用 DataView 和 TypedArray 高效读写二进制协议、文件头或网络包,并处理大端/小端。
错误链与完整堆栈:Error Cause 与自定义序列化
利用 Error.cause 和栈追踪扩展构建清晰的错误传递链,并实现跨上下文序列化。
Temporal API 实战:超越 Date 的日期数学与时区处理
使用提案 Temporal 对象进行精确的日期算术、时段计算和跨时区日程安排。
闭包与记忆化函数:高性能递归优化
利用闭包特性实现memoization缓存,避免重复计算。适合斐波那契等递归场景。
Proxy与元编程:构建不可变的类型校验层
使用Proxy拦截对象set操作,实现运行时类型验证与不可变约束。
Generator与Async迭代器:手动实现async/await
通过Generator函数+Promise模拟async/await异步控制流,深入理解协程原理。
Symbol.iterator与生成器:创建可迭代的流式数据结构
利用Symbol.iterator和Generator创建自定义可迭代对象,实现惰性计算。
SharedArrayBuffer与Atomics:实现多线程无锁同步
利用Web Workers和SharedArrayBuffer进行线程间通信,使用Atomics操作保证数据一致性。
V8引擎隐藏类与内联缓存:写出高性能JS的底层原理
深入V8的Hidden Class和Inline Cache机制,避免去优化导致性能下降。
WebAssembly与JavaScript互操作:调用C函数实现计算密集任务
编写C代码编译为.wasm,通过JS调用并传递复杂数据结构。
错误边界模式:用Symbol和Proxy构建防御性API
使用Symbol标记内部方法,Proxy拦截错误传播,实现健壮的SDK设计。
Intl.DateTimeFormat与相对时间:构建全语言国际化日历
使用Intl API处理不同地区的日期格式、时区转换与相对时间文案。
Web Crypto API:在浏览器中实现端到端加密聊天
使用SubtleCrypto接口生成RSA密钥对,通过AES-GCM加密消息,实现安全通信。
用 Proxy 实现隐式数据校验与实时转换
摆脱传统的 if-else 校验模式,利用 Proxy 的 get/set 陷阱自动对数据赋值进行类型转换和规则校验,同时保持代码极简。
Generator + Iterator 构建惰性数据管道
学习如何组合生成器函数与迭代器协议,创建可暂停、可组合的数据处理管道,处理大文件流或无限序列且不占内存。
利用 Reflect API 开发迷你领域特定语言
深入 Reflect 元编程能力,通过代理对象和反射方法创建可读性极高的声明式 DSL,实现类似数据库查询或配置文件的链式调用。
SharedArrayBuffer 与 Atomics:浏览器中的真多线程
突破 JavaScript 单线程限制,使用 SharedArrayBuffer 在 Web Workers 间共享内存,并结合 Atomics 进行无锁同步,实现高性能并行计算。
深入私有字段与 WeakMap 实现真正的封装
对比 # 私有字段语法与 WeakMap 模拟私有属性的底层差异,并利用 WeakMap 实现可被垃圾回收的私有数据,设计不会被篡改的类库。
构建可双向迭代的自定义可迭代对象
超越简单的 for...of,实现一个二叉树数据结构同时支持正向(中序)和反向(逆中序)迭代,使用 Symbol.iterator 和 Symbol.asyncIterator。
标签模板字面量:从 SQL 到安全的 HTML 生成器
利用标签模板函数实现模板注入防护与自定义语法,构建一个自动转义 HTML 的标签函数,同时支持嵌套模板和条件渲染。
用 Proxy 打造极简虚拟 DOM 与差异更新引擎
不依赖 React/Vue,手写一个基于 Proxy 的响应式状态系统,自动追踪状态变化并对比虚拟 DOM 树,只更新变化节点。
TypedArray 与 DataView 解析二进制文件格式
脱离字符串处理,直接操作二进制缓冲区,解析 BMP 图片或自定义二进制协议,掌握 endianness 和字节对齐技巧。
利用 Proxy 构建自动 Mock 与行为追踪测试工具
不使用任何测试框架,仅用 Proxy 创建能记录所有调用的 Mock 对象,支持断言调用次数、参数匹配、甚至模拟异步返回。
闭包陷阱:意外内存泄漏的隐蔽模式
理解闭包如何意外持有大对象引用导致内存泄漏,并掌握检测与修复技术。
Symbol.iterator以外的迭代协议:构建可中断的异步迭代器
深入AsyncIterator协议,实现具有取消、进度反馈和错误恢复的自定义可迭代对象。
元编程实战:用Proxy构建不可变对象和自动验证系统
超越基础get/set拦截,实现嵌套不可变、模式验证和自动数据转换的Proxy架构。
SharedArrayBuffer与Atomics:浏览器端的真正多线程计算
利用Web Workers + SharedArrayBuffer实现无锁数据结构和高性能并行计算,并理解安全限制。
递归的尽头:手动蹦床函数与尾调用优化实战
即便没有TCO环境,也能用蹦床函数(trampoline)将递归转为迭代,避免栈溢出。
Intl API深度:超越日期货币——相对时间、列表格式与复数规则
掌握Intl.Locale、Intl.RelativeTimeFormat、Intl.ListFormat和Intl.PluralRules,构建全球化的用户界面。
WeakRef与FinalizationRegistry:手动内存管理的最后防线
在垃圾回收不可控的JS世界中,利用WeakRef和FinalizationRegistry实现缓存、监视和资源回收。
WebCodecs API:浏览器原生视频编码与处理管线
绕过WebAssembly,直接用WebCodecs API解码、编码、处理视频帧,实现实时滤镜与转码。
Temporal API: 终结Date的痛苦——时区、历法和精确时间运算
使用全新的Temporal对象(PlainDate, ZonedDateTime, Duration)进行无陷阱的日期时间操作。
Form-Associated Custom Elements: 构建原生表单控件
使用ElementInternals创建可参与表单验证、提交和重置的自定义HTML元素,告别第三方库。
深入理解迭代器协议与自定义可迭代对象
探索 JavaScript 迭代器协议和可迭代协议的底层机制,学习如何创建自己的可迭代数据结构。
Proxy 元编程:拦截器模式与动态行为注入
使用 JavaScript Proxy 实现拦截器、属性验证、日志记录和延迟初始化等高级模式。
Web Workers 与 Transferable Objects:高性能并行计算
利用 Web Workers 执行并行任务,并通过 Transferable Objects 实现零拷贝数据传递,优化性能。
异步生成器与流式数据处理
使用异步生成器处理流数据、分页 API 和实时事件流,实现高效的内存控制。
尾调用优化与高效递归模式
深入尾调用优化(TCO)原理,编写不会栈溢出的递归函数,并了解引擎实现差异。
Symbol 与内置符号:隐藏属性与协议定制
利用 Symbol 创建私有属性和覆盖语言内部行为,如 Symbol.toPrimitive、Symbol.hasInstance。
Intl API 高级用法:精确格式化与多语言适配
使用 Intl 对象进行日期、数字、复数规则和列表格式化,实现国际化应用。
WeakRef 与 FinalizationRegistry:内存管理与对象生命周期追踪
利用 WeakRef 和 FinalizationRegistry 观察对象被垃圾回收的时机,实现缓存和资源清理。
函数组合与管道操作符:从链式调用到声明式流
探索函数式编程中的组合子模式,使用管道操作符(提案)或手动实现进行数据流转换。
高级错误处理:AggregateError、自定义错误与重试策略
超越 try/catch,利用 AggregateError 组合多个错误,实现指数退避重试和结构化错误分类。
对象属性描述符与元编程
深入理解 Object.defineProperty、getter/setter 和属性描述符的隐秘操作,实现数据绑定与只读属性。
Generator 的双向通信与协程模式
利用 yield 表达式接收外部数据,构建可暂停恢复的协程,实现非阻塞异步流控制。
Proxy 反射与隐藏拦截场景
用 Proxy 创建虚拟属性、负索引数组、自动填充对象,并理解 Revocable Proxy 的安全沙箱。
尾调用优化与递归优化策略
严格模式下尾调用的原理与实战,以及如何手动将递归转为迭代来规避栈溢出。
Symbol 与 Well-known Symbols 内部协议
掌握 Symbol 的唯一性、全局注册表,以及如何通过 Symbol.iterator 等内置符号定制对象行为。
原型链的隐藏链路与继承陷阱
深入原型链查找机制、constructor 丢失问题,以及如何用 Object.create 实现纯原型式继承。
Promise 内部机制与微任务队列
手写 Promise 核心逻辑,理解 then 链的微任务调度、异步回调注册与错误冒泡。
Intl 对象:国际化与本地化高级用法
使用 Intl.DateTimeFormat、Intl.NumberFormat、Intl.Collator 处理多语言日期、数字排序,以及自定义格式化。
模块系统:CommonJS vs ESM 底层差异
深入 require 与 import 的加载机制、循环依赖处理、静态分析与 tree-shaking 原理。
Web Worker 与可转移对象性能优化
创建 Worker 线程、使用 postMessage 传递二进制数据,以及利用 Transferable 对象消除内存拷贝。