JavaScript静态方法用static关键字定义,直接绑定类本身而非实例,需用传统函数声明、不可用箭头函数,可访问其他静态成员但不能用this访问实例属性或方法,适用于工具函数、工厂方法等与类相关但无关实例的场景。
JavaScript 的静态方法用 static 关键字定义,直接挂载在类本身(即构造函数)上,不依赖实例,也不需要 new 就能调用。它适合放那些“跟类有关、但跟具体对象无关”的逻辑。
在 class 内部,方法名前加 static 即可,必须用传统函数语法,不能用箭头函数:
static createAdmin(name) { return new this(name, 'admin'); }
static createAdmin = (name) => { ... }(语法报错)this 指向当前调用它的类(可能是子类),不是实例this.version 或 this.validate()
它不操作实例状态,专注纯逻辑或类级行为:
DateUtils.formatISO(date)、StringUtils.truncate(str, len)
User.createAdmin('Alice') 或 ApiClient.fromConfig(cfg)
Array.isArray(),例如 ApiResponse.isError(res)
Logger.getInstance() 确保全局唯一Product.bulkDiscount(items, 0.1),输入数据集合,输出结果,不修改单个实例因为没有实例上下文,它无法直接读写实例数据:
立即学习“Java免费学习笔记(深入)”;
this.name 会是 undefined,不是实例上的值this.sayHello() 会报 "is not a function",因为实例方法不在类构造函数上static isValid(user) { return user?.status === 'active'; }
this.save() 或读取 this.token——这些属于实例,静态上下文中不存在静态方法的使用有明确规则,稍不注意就出错:
User.createAdmin() ✅,new User().createAdmin() ❌this 在子类调用时指向子类自身super.staticMethod() 显式调用父类静态方法