在 javascript class 上使用静态方法
using static method on javascript class
我比较关心哪个更快。我应该使用从 class 创建一个新对象并使用该对象还是将 class 与静态方法一起使用。
export default class AuthServices {
static async login (data) {}
static async register (data) {}
}
以上代码使用了静态方法,我可以通过先调用class 名称来访问login
和register
函数。我是否应该摆脱 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();
我比较关心哪个更快。我应该使用从 class 创建一个新对象并使用该对象还是将 class 与静态方法一起使用。
export default class AuthServices {
static async login (data) {}
static async register (data) {}
}
以上代码使用了静态方法,我可以通过先调用class 名称来访问login
和register
函数。我是否应该摆脱 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();