JavaScript 中 class 必须通过 new 调用,直接调用会抛出 TypeError;constructor 的返回逻辑由 new 控制;方法中的 this 依赖 new 创建的实例;子类 super() 调用也强制要求 new 启动。

JavaScript 中 class 语法本身不能脱离 new 运算符直接调用,这是语言层面的硬性约束。
class 必须配合 new 使用
定义的 class 不是普通函数,它被设计为只能通过 new 实例化。直接调用会抛出 TypeError:
class Person { constructor(name) { this.name = name; } }-
Person('Alice')→ 报错:Class constructor Person cannot be invoked without 'new' - 即使 constructor 是空的,也不允许省略
new
constructor 方法不可省略 new 的语义
class 内部的 constructor 是隐式绑定到实例创建流程的。它不负责返回对象——返回逻辑由 new 控制:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 若
constructor显式return一个对象(非 null 引用类型),则该对象成为最终实例 - 若
return基本类型(如return 42或return 'ok'),则被忽略,仍返回新创建的实例 - 不写
return语句时,自动返回新实例
箭头函数与 class 方法中的 this 约束
class 中定义的方法(包括 constructor)内部的 this 指向严格依赖 new 创建的实例:
立即学习“Java免费学习笔记(深入)”;
- 若在 class 外部或回调中错误地将方法解构后单独调用(如
const { say } = new Person(); say()),this会丢失 - class 中的箭头函数属性(如
say = () => console.log(this.name))能保持this绑定,但前提是它依附于一个已由new创建的实例 - 没有
new,就没有合法的this上下文,箭头函数也无法“修复”这个前提
继承链中 super() 调用依赖 new
子类 constructor 中必须先调用 super(),而 super() 的执行前提是当前上下文是一个由 new 初始化的、尚未完成构建的实例:
-
super()实质是调用父类 constructor,并将当前实例(由new提供)作为this传入 - 若未通过
new启动整个流程,super()会报错:Must call super constructor in derived class before accessing 'this' - 这意味着 class 继承体系从顶层开始就强制要求
new驱动

















