gpt4 book ai didi

javascript - 仅执行一次某些基类方法调用而不是该类的每个实例?

转载 作者:行者123 更新时间:2023-12-01 02:33:39 25 4
gpt4 key购买 nike

我有一个在实例化时执行登录请求的类,我只希望此登录请求是由基类和所有其他实例执行以确认登录已执行。任何人都可以建议如何实现这一点,这是否是一个用例登录功能静态吗?

// Example
class Content {
constructor() {
this.performLogin()
}

performLogin() { // will making this static achieve my request?
// go fetch if 1st time
// else bypass this step
}

performLogout() {
// perform log out once only
}
}

class ContentOne extends Content {
constructor() {
super()
}
doSomethingElse() {
//...
}
}

class ContentTwo extends Content {
constructor() {
super()
}
alertUser() {
//...
}
}

const contentOne = new ContentOne()
const contentTwo = new ContentTwo()

最佳答案

更好的设计是有一个 LoginService 来管理它。如果已经登录,它将忽略该请求。例如,

class LoginService {
constructor() {
this.isLoggedIn = false;
}
login() {
if (this.isLoggedIn) { return; }
// do work
this.isLoggedIn = true;
}
}

class Content {
constructor(loginService) {
this.loginService = loginService;
this.performLogin()
}

performLogin() {
this.loginService.login();
}

performLogout() {
// perform log out once only
}
}

const loginService = new LoginService();
const contentOne = new ContentOne(loginService);
const contentTwo = new ContentTwo(loginService);

使函数静态不会阻止某些内容被多次调用。

关于javascript - 仅执行一次某些基类方法调用而不是该类的每个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com