JavaScript中class的constructor是唯一构造方法,new时自动调用以初始化实例;若继承父类则首行须调用super();默认提供空构造器;返回对象会替换实例,返回原始值被忽略。

JavaScript 中用 class 语法定义构造器,本质是创建一个具有构造函数行为的类,其核心是通过 constructor 方法初始化实例。
constructor 是唯一的构造器方法
class 内部只能有一个名为 constructor 的特殊方法。它会在使用 new 实例化时自动调用,用于设置初始状态(如赋值给 this)。
- 如果不显式声明
constructor,JavaScript 会自动提供一个空的默认构造器(constructor() {}) - 如果显式写了
constructor,且该类继承自父类(用了extends),则必须在第一行调用super(),否则报错 - 构造器中可以执行任意合法语句:赋值、调用方法、条件判断、甚至异步逻辑(但注意
new不支持 await,需另行封装)
基本写法示例
定义一个表示用户的类:
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
class User {
constructor(name, age) {
this.name = name;
this.age = age;
this.createdAt = new Date();
}
}
const u = new User('张三', 25);
console.log(u.name); // '张三'
console.log(u.createdAt); // 当前时间对象
与继承配合时的构造器要点
子类构造器中必须调用 super(),且传参需匹配父类 constructor 的参数签名:
立即学习“Java免费学习笔记(深入)”;
class Person {
constructor(name) {
this.name = name;
}
}
class Student extends Person {
constructor(name, grade) {
super(name); // 必须先调用 super
this.grade = grade; // 再初始化子类特有属性
}
}
const s = new Student('李四', 'A');
console.log(s.name); // '李四'
console.log(s.grade); // 'A'
构造器中不能返回普通对象(除非有意替换实例)
正常情况下,constructor 不应有 return 语句;若返回原始值(如字符串、数字),会被忽略;若返回对象,则 new 表达式的结果将变成该对象,不再是当前类的实例(极少见,通常不推荐):
- 返回
{}或其他对象 → 新实例被替换成该对象,instanceof检查会失败 - 返回
this(或不写 return)→ 正常返回新创建的实例

















