javascript类中构造函数用constructor定义,最多一个,new时自动调用;成员属性可在constructor内用this初始化或类顶层用字段声明(es2022+);static定义静态成员,属类本身而非实例。

在 JavaScript 的 Class 中,构造函数用 constructor 方法定义,成员属性可直接在 constructor 内通过 this.xxx = xxx 初始化,或在类体顶层(ES2022+)用字段声明语法直接定义。
构造函数:用 constructor 定义
每个 class 最多只能有一个 constructor。它在使用 new 创建实例时自动调用,用于初始化对象状态。
- 不写 constructor 时,JavaScript 会提供一个空的默认构造函数
- 若显式定义了 constructor,且需要继承父类,则必须在第一行调用 super()
- 可以在 constructor 中接收参数,并赋值给 this 上的属性
示例:
constructor(name, age) {
this.name = name;
this.age = age;
}
}
成员属性:两种常见写法
方式一:在 constructor 中初始化(兼容所有环境)
这是最通用、最稳妥的方式,适用于所有支持 class 的浏览器和 Node.js 版本。
constructor(brand, model) {
this.brand = brand;
this.model = model;
this.isRunning = false; // 默认值也可在此设定
}
}
方式二:类字段(Class Fields)语法(ES2022+)
可在类体顶层直接声明实例属性,更简洁直观,但需注意运行环境支持情况。
brand = 'Unknown';
model = 'Generic';
isRunning = false;
constructor(brand, model) {
this.brand = brand || this.brand;
this.model = model || this.model;
}
}
静态属性与方法的区别
用 static 关键字定义的属性或方法属于类本身,而非实例。它们不能通过 this 访问,也不能被实例调用(除非显式通过类名)。
class MathUtils {static PI = 3.14159;
static double(x) {
return x * 2;
}
}
console.log(MathUtils.PI); // 3.14159
console.log(MathUtils.double(5)); // 10
注意事项
- 类中不能用 var/let/const 声明同名成员变量,否则报错
- 字段声明(如
prop = value)默认是实例属性,不是原型属性 - 避免在 constructor 外直接写
this.xxx = xxx,那会引发语法错误 - 私有成员可用 #name 语法(ES2022 私有字段),但不可在 constructor 外省略 # 号访问
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











