静态方法可通过返回类本身(return this)实现链式调用,适用于配置类等无实例场景,但仅操作静态属性、存在状态共享风险;更健壮的方式是静态工厂返回实例再链式调用。

静态方法本身不能直接链式调用,因为它们不返回 this(类实例),也没有隐式上下文。但可以通过设计让静态方法返回类本身(即构造函数或类名),从而支持链式调用。
返回类构造器实现链式调用
静态方法返回类本身(如 return this),后续就能继续调用同类的其他静态方法。
- 在静态方法末尾写
return this;,确保返回的是当前类(而非实例) - 所有参与链式调用的静态方法都需遵循这一约定
- 适用于配置类、工具类等无需实例化的场景
典型示例:配置构建器模式
比如一个数据库配置类,通过静态方法逐步设置参数:
class DBConfig {
static host(value) {
this._host = value;
return this; // 返回类本身
}
static port(value) {
this._port = value;
return this;
}
static build() {
return { host: this._host, port: this._port };
}
}
// 使用
const config = DBConfig.host('localhost').port(5432).build();
// → { host: 'localhost', port: 5432 }
注意点与限制
这种链式调用是“伪实例链式”,本质是静态属性累积 + 类自身返回,不是真正的对象链式。
- 无法访问实例属性或方法,只能操作静态属性
- 多线程/并发环境下需谨慎,静态属性会被共享
- TypeScript 中需显式声明
this: typeof ClassName保证类型推导准确 - 不适用于需要隔离状态的场景;如有状态需求,建议改用实例方式
替代方案:静态工厂 + 实例链式
更健壮的做法是静态方法返回新实例,由实例承担链式逻辑:
- 静态方法(如
create())返回实例 - 实例方法返回
this,支持流畅调用 - 兼顾类型安全、状态隔离和可读性











