构造函数必须用大驼峰命名,以明确标识需配合 new 使用,防止误调导致 this 指向全局、污染环境;小写或下划线命名会模糊语义,引发隐蔽 bug。

构造函数命名用大驼峰(PascalCase),核心不是为了好看,而是让每个调用者一眼识别“这个函数要配合 new 使用”,避免误调导致 this 指向全局、污染环境。
为什么必须用大驼峰,而不是小写或下划线
JavaScript 不强制首字母大写,但小写命名(如 user())会模糊语义:别人很难区分它是工具函数还是构造器。一旦被直接调用(没加 new),在非严格模式下,this 会绑定到 window 或 global,造成属性意外挂载——比如 name = 'Alice' 变成全局变量,调试时极难定位。
- ✅ 正确命名:
function User(name, age) { this.name = name; }→ 调用时自然想到new User('Alice', 25) - ❌ 危险命名:
function user(name, age) { this.name = name; }→ 很可能被误写为user('Alice', 25),埋下隐患
大驼峰怎么写才合规
不是简单把首字母变大,而是每个单词首字母都大写,中间不加空格、下划线或连字符,全部单词连成一体:
- ✔️ 合规示例:
UserInfo、ApiService、HttpError、OrderDetailDto - ✘ 常见错误:
user_info(蛇形)、userInfo(小驼峰,适合变量/方法)、USERINFO(全大写,适合常量) - ⚠️ 缩写处理:通用缩写如
ID、URL、HTTP保持大写,但要整体融入大驼峰结构,如UserID、ImageUrl、HttpRequest
和 ES6 class 以及其他命名如何协同
即使你只用 class,也要延续同一套语义逻辑:大驼峰 = 可实例化的类型蓝图;小驼峰 = 可执行的行为单元。
- 类名 / 构造函数名:大驼峰 →
class PaymentProcessor {}、function DatabaseConnection() {} - 普通函数名:小驼峰 + 动词开头 →
getUserInfo()、connectToDatabase() - 变量 / 实例属性:小驼峰 + 名词 →
const userInfo = new UserInfo();、userInfo.fullName - 常量:全大写 + 下划线 →
const MAX_RETRY_COUNT = 3;
团队落地时容易忽略的关键点
光靠自觉不行,得靠规则+工具双保险:
- 在 ESLint 中启用
new-cap规则,自动警告小写构造函数被new调用,或大写函数被直接调用 - 文件命名可配合:构造函数所在文件用小写短横线(
user-service.js),但导出的类/函数名仍坚持大驼峰 - Code Review 时重点看三处:类名是否大驼峰、
new后面跟的是否大驼峰、有没有漏掉new却用了大驼峰名
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











