⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

⚡ 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 对象消除内存拷贝。

🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 231 篇
0 完成
🔥 0