constructor是类初始化实例时自动执行的入口,核心任务是接收参数并用this赋值给实例属性;可设默认值、不强制全赋值;省略时js提供默认空构造函数;继承时子类constructor首行须调用super()。

constructor 构造函数是类初始化实例时自动执行的入口,它的核心任务就是接收参数、设置实例属性。处理初始化参数的关键在于:明确参数用途、用 this 赋值给实例、注意调用时机和限制。
参数接收与实例属性赋值
构造函数形参直接对应 new 实例时传入的实参。在函数体内,通过 this.属性名 = 值 把参数挂载到新创建的实例上:
- 例如
class Person { constructor(name, age) { this.name = name; this.age = age; } },调用new Person("小明", 25)后,实例就拥有name和age两个自有属性 - 参数可以是任意类型(字符串、数字、对象、函数等),也可设默认值:
constructor(name = "匿名", age = 0) - 不强制要求所有参数都赋给 this,也可仅用于内部逻辑判断或调用其他方法
省略 constructor 的情况
如果类不需要任何初始化操作,完全可以不写 constructor。JavaScript 会自动提供一个空的默认构造函数:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- 例如
class Animal { sleep() { console.log("zzz"); } },new Animal()仍能成功创建实例 - 此时实例没有自有属性,但可正常使用类中定义的方法
- 一旦显式声明了 constructor,就必须用 super()(继承时)或至少保证逻辑完整,否则可能报错
继承中 constructor 与 super 的配合
子类自定义 constructor 时,必须第一行调用 super(...),把父类需要的参数传过去:
-
super(name, age)不仅初始化父类属性,还确保子类实例获得正确的原型链和 this 绑定 - super 必须在使用 this 之前调用,否则会抛出 ReferenceError
- 如果父类 constructor 有默认参数,子类传参时可选择性传递,如
super(name),age 将取父类设定的默认值
静态属性与初始化参数无关
constructor 处理的是**实例级**初始化,和类本身的静态属性/方法无关:
- 像
static lang = "zh"或static createDefault() {...}属于类自身,不参与实例创建流程 - 初始化参数只影响每个 new 出来的对象,不影响类名、静态成员或 prototype 上的方法










