在 javascript class 上使用静态方法

using static method on javascript class

我比较关心哪个更快。我应该使用从 class 创建一个新对象并使用该对象还是将 class 与静态方法一起使用。

export default class AuthServices { 
    static async login (data) {}
    static async register (data) {}
}

以上代码使用了静态方法,我可以通过先调用class 名称来访问loginregister 函数。我是否应该摆脱 static 并在要调用这些函数的文件上创建一个对象。

您可以简单地为 AuthServics 使用对象文字而不是 class。

export default const AuthServices =  { 
      login: async (data) {}
      register: async (data) {}
}

如果您想使用 class,则使用静态方法,不要从 class 实例化。 像这样访问方法

AuthServices.login()

无需在内存中创建这些方法的多个副本。

我认为将AuthService实现为具有静态方法获取实例的单例会更好。 (因为您希望全局访问此服务)

class AuthService {

  constructor() {
    if (!AuthService._instance) {
      AuthService._instance = this;
    }
    return AuthService._instance;
  }

  static getInstance() {
    return this._instance;
  }

  async login(data) {
   //Implementation
  }

  async register(data) {
  //Implementation
  }
}

要访问它,您需要执行以下操作:

const authService = AuthService.getInstance();

authService.register();
authService.login();