2 回答
TA贡献1993条经验 获得超5个赞
您实例化了该类的一个新实例。这就是它未定义的原因。有几种方法可以解决这个问题。我建议导出创建的模型并在其他文件中使用该模型。
//model.js
const token = new Tokens();
token.setAccessToken(access_token);
token.setRefreshToken(refresh_token);
export default token;
// scheduler.js
import { test } from './models/model.js'
// Here, the test is going to be the same as declared before.
console.log('xxx',test.getAccessToken())
在这里,您可以看到新实例化的类被导入到scheduler, 中以供使用。
实现此目的的另一种方法是使用单例模式。单例是一种仅包含一个实例的类。使用这种模式,无论您尝试调用该函数,数据都将是相同的。
export default class TokensSingleton {
this.instance = null;
constructor(){ /* ... */}
static getInstance() {
if(!TokensSingleton.instance) {
TokensSingleton.instance = new TokensSingleton();
}
return TokensSingleton.instance;
}
/* ... */
}
//index.js
const token = TokenSingleton.getInstance();
token.setAccessToken('test');
token.setRefreshToken(refresh_token);
// scheduler.js
import Tokens from './models/tokens.js'
const test = TokenSingleton.getInstance();
console.log('xxx',test.getAccessToken()) // xxx, test
请注意,此代码未经测试。
添加回答
举报