说我有2个课程Auth
和Client
。如果我有一个属性Auth.token
,我希望能够将该属性作为参考传递给Client.token
,这样当我更改Auth.token
时,它也会更改Client.token
的值
这是一个目前无效的简化示例..
class Auth {
constructor() {
this._token = '123';
}
get token() {
return this._token;
}
updateToken(newToken) {
this._token = newToken;
}
}
class Client {
constructor(token) {
this._token = token;
}
fetch() {
console.log(this._token);
}
}
const auth = new Auth();
const client = new Client(auth.token);
client.fetch();
auth.updateToken('abc');
client.fetch();
答案 0 :(得分:4)
您可以将Auth
个实例传递到Client
个实例,然后通过token
访问Auth
。这样可以确保Auth._token
的更新会影响Client
:
class Auth {
constructor() {
this._token = '123';
}
get token() {
return this._token;
}
updateToken(newToken) {
this._token = newToken;
}
}
class Client {
constructor(auth) {
this._auth = auth;
}
fetch() {
console.log(this._auth.token);
}
}
const auth = new Auth();
const client = new Client(auth);
client.fetch();
auth.updateToken('abc');
client.fetch();
答案 1 :(得分:1)
制作全局变量将是实现这一目标的一种方式。然后,您只需通过Auth
更新令牌。
let token = ''
class Auth {
constructor() {
token = '123';
}
get token() {
return token;
}
updateToken(newToken) {
token = newToken;
}
}
class Client {
fetch() {
console.log(token);
}
}
const auth = new Auth();
const client = new Client();
client.fetch();
auth.updateToken('abc');
client.fetch();