JavaScript类中静态属性和方法用static声明,属于类本身而非实例,只能通过类名调用,不可通过实例访问;静态方法无this上下文,适合工具函数;静态属性可定义配置项、常量等;子类继承父类静态成员,但实例无法访问静态成员。

JavaScript class 中,静态属性和方法用 static 关键字声明,它们属于类本身,不依赖实例,也不能通过实例访问。
静态方法的定义与使用
在 class 内部方法名前加 static,该方法就成为静态方法:
- 只能通过类名调用,如
User.isValidName() - 不能访问
this,因为没有实例上下文 - 适合放工具函数、校验逻辑、工厂创建逻辑等
示例:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
class User {
constructor(name) {
this.name = name;
}
static isValidName(str) {
return typeof str === 'string' && str.trim().length > 0;
}
}
User.isValidName('Alice'); // true
// new User('Bob').isValidName(); // ❌ 报错
静态属性的定义方式
静态属性也需加 static 前缀,直接写在 class 体中:
立即学习“Java免费学习笔记(深入)”;
- ES2022 起原生支持
static prop = value语法 - 值可为基本类型、对象、函数,但不可在实例上读取
- 常用于配置项、计数器、默认常量等
示例:
class ApiClient {
static baseUrl = 'https://api.example.com';
static timeout = 5000;
static getHeaders() {
return { 'Content-Type': 'application/json' };
}
}
console.log(ApiClient.baseUrl); // "https://api.example.com"
console.log(ApiClient.getHeaders()); // { 'Content-Type': 'application/json' }
注意点与常见误区
- 静态成员不会被实例继承,
new MyClass().staticMethod是undefined - 子类会继承父类的静态方法和属性,可用
super在子类静态方法中调用 - 构造函数里写的
this.xxx是实例属性,和static xxx完全无关 - 不要在静态方法里写
this.xxx,否则运行时出错(this指向 undefined)

















