javascript类中静态方法用static关键字定义在类体内,只能通过类名调用;静态属性static prop = value是es2022+特性,需环境支持。

JavaScript 中 class 语法本身不支持直接用 static prop = value 这样的字段声明(这是类字段提案的语法,需注意环境支持),但静态属性和方法的写法很明确:用 static 关键字修饰,定义在类体内。
静态方法怎么写
在 class 内部,用 static 开头加函数名即可。它只能通过类名调用,不能通过实例调用。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
例如:
class MathUtils {
static add(a, b) {
return a + b;
}
static PI = 3.14159; // ✅ 静态属性(ES2022+ 支持,现代浏览器和 Node.js 16+ 可用)
}
console.log(MathUtils.add(2, 3)); // 5
console.log(MathUtils.PI); // 3.14159
⚠️ 注意:如果运行环境不支持类字段(如旧版 Safari 或 Node.js
class MathUtils {
static add(a, b) {
return a + b;
}
}
MathUtils.PI = 3.14159; // ✅ 兼容写法
静态属性的两种写法对比
-
类内声明(推荐,但需检查兼容性):
static propName = value;—— 简洁、直观,属于 Class Fields 提案,已进入 ES2022 标准 -
类外赋值(最大兼容):
ClassName.propName = value;—— 所有 ES6+ 环境都支持,适合需要兼容老环境的项目
常见误区提醒
- 静态方法里不能直接访问
this实例属性(因为没实例),this指向的是类本身 - 不要在静态方法中写
this.name期望拿到实例名——它拿到的是构造函数名,且不可靠 - 静态属性不会被子类继承?错!会被继承,但子类可覆盖(类似原型链上的静态成员)
子类如何继承和重写静态成员
子类会自动继承父类的静态方法和属性,也可用自己的 static 覆盖:
class Animal {
static type = 'animal';
static speak() { return 'sound'; }
}
class Dog extends Animal {
static type = 'dog'; // ✅ 覆盖父类静态属性
static speak() { return 'woof'; } // ✅ 覆盖父类静态方法
}
console.log(Animal.speak()); // 'sound'
console.log(Dog.speak()); // 'woof'
console.log(Dog.type); // 'dog'
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










