static 关键字用于声明类的静态属性和方法,属于类本身而非实例;需用类名访问(如 mathutils.pi),不可通过实例访问;静态属性被所有实例共享,适合存放常量或工具配置,但可被重新赋值,需谨慎使用。

JavaScript 中的 static 关键字用于声明类的静态属性和方法,它们属于类本身,而不是类的实例。
静态属性的声明方式
静态属性直接定义在类上,使用 static 修饰符,只能通过类名访问,不能通过实例访问。
- 语法:在类体内用 static + 属性名 = 值 的形式声明
- 注意:不能在构造函数或实例方法中用 this 访问静态属性
- 示例:class MathUtils { static PI = 3.14159; }
静态属性的访问规则
静态属性必须通过类名访问,例如 MathUtils.PI;若尝试通过实例访问(如 new MathUtils().PI),结果为 undefined。
- 可在静态方法中用 ClassName.propertyName 或 this.constructor.propertyName 引用
- 可在普通实例方法中用 类名.静态属性 访问,但不推荐硬编码类名(不利于继承)
- 子类可继承父类的静态属性,也可用自己的 static 覆盖或扩展
静态属性与实例属性的区别
静态属性被所有实例共享,且在类加载时就存在;实例属性则每个对象独有一份,在构造时初始化。
- 静态属性适合存放常量、工具配置、计数器等跨实例通用的数据
- 实例属性适合保存对象自身的状态,如 this.name、this.id
- 误将频繁变化的状态设为静态,可能导致多个实例意外共享数据
常见误区与注意事项
静态属性不是“只读”,可以重新赋值,但需谨慎操作,尤其在多实例场景下。
- 静态属性无法在类声明外部用 类名.property = value 添加(ES6 类是封闭结构)
- 若需动态添加,可用 Object.defineProperty 或直接赋值到类对象上,但不属于标准声明方式
- TypeScript 中静态属性支持类型标注,JS 运行时无类型检查,需靠逻辑保证一致性
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











