现在(2026 年初),写 JavaScript 的人还在大量使用 class 关键字,并没有“没人用”到那种程度,但确实有明显的使用场景分化 + 部分社区偏好转向的现象。
简单说:class 远没有被抛弃,但它已经不是唯一主流、也不是最“时髦”的写法了。
2025–2026 年真实使用现状
| 场景 / 风格 | class 关键字使用频率 | 主流替代方式 | 典型框架/库生态现状(2025–2026) | 谁在用 class? |
|---|---|---|---|---|
| React 类组件 | 极低(几乎绝迹) | 函数组件 + Hooks | React 官方从 16.8 开始强烈推荐函数组件,class 组件已成“历史遗留” | 极少数老项目维护 |
| React / Vue / Svelte 业务组件 | 低 | 函数式 + Composition API / 组合式 API | Vue 3 → Composition API,Svelte → runes,React → Hooks | 很少 |
| TypeScript 大型项目(非 UI) | 中高 | class + interface / type | NestJS、tRPC 服务端、Electron 主进程、复杂状态机 | 很多后端/全栈/桌面开发者还在用 |
| 库/框架作者、工具类 | 高 | class(继承、静态方法、private/public) | Three.js、GSAP、部分状态管理库、Web Components | 频繁 |
| 游戏 / 图形 / 引擎层 | 高 | class(继承链、实例方法清晰) | Phaser、Babylon.js、PlayCanvas、自定义渲染器 | 主流 |
| 纯函数式 / 小型工具函数 | 低 | factory function / object literal / closure | Redux Toolkit、zustand、许多 utility 库 | 偏好 factory |
| 现代极简主义 / FP 社区 | 极低 | factory / closure / object literal | 部分 React Query / TanStack 风格作者、一些 indie hacker | 少数派但声音大 |
为什么有人觉得“没人用 class 了”?
- React 生态的巨大示范效应
React 从 class → 函数组件的迁移(2019–2023)影响了整整一代开发者。很多人学 JS/TS 的第一课就是“别用 class,用 Hooks”,于是产生了“class 已死”的错觉。 - Composition over Inheritance 思潮
class 天然鼓励继承,而现代 JS/TS 社区更推崇组合 + 闭包 + factory(尤其是 TypeScript 类型推导友好)。文章如“Do you need classes in JS/TS? [2025 version]”就反复讨论这个话题。 - private 字段和 # 语法糖
class 里的private #field虽然好用,但 factory + closure 也能实现封装,且更灵活(无 this 绑定问题)。 - 噪音大的反 class 声音
Medium/DEV.to/Reddit 上总有“Stop Using JavaScript Classes!”这类标题党文章,容易制造“大家都不用了”的印象。
实际数据侧写(2025–2026 视角)
- GitHub 代码搜索:
class关键字在 .js/.ts 文件中出现率仍然很高(尤其 NestJS 项目、Three.js 相关、Electron 应用)。 - Stack Overflow / MDN:class 文档和问题依然活跃,ES2025 也没有废弃或贬低 class。
- State of JS 调查(如果 2025 版已出):class 使用率可能在 60–80% 项目中仍有出现,但“主要 OOP 方式”从 class 降到与 factory 并列。
总结一句话
没人完全扔掉 class,但在前端 UI 层(React/Vue/Svelte),class 确实已经退居二线甚至三线;
而在服务端、全栈框架、复杂对象模型、图形/游戏、需要清晰继承的场景,class 仍然是主流写法之一。
如果你现在写的是 React 函数组件 + Hooks,那确实几乎不用 class;
但如果你在写 NestJS 服务、桌面应用、WebGL 工具库或复杂状态管理,class 很可能还是日常主力。
你现在主要在哪个场景写 JS/TS?UI 前端、服务端还是其他?这样我可以更精准说说 class 在你这个方向的地位。