为了账号安全,请及时绑定邮箱和手机立即绑定

从节点js中的另一个文件访问getter值

从节点js中的另一个文件访问getter值

隔江千里 2023-09-28 17:30:45
目前正在创建一个节点项目,并创建了一个如下所示的模型:export default class Tokens {    constructor() {        this.accessToken = '';        this.refreshToken = '';    }    getAccessToken() {        return this.accessToken;    }    setAccessToken(value) {        this.accessToken = value;    }    getRefreshToken() {        return this.refreshToken;    }    setRefreshToken(value) {        this.refreshToken = value;    }};在一个文件中 - 我已经实例化了该类,并设置了如下值:索引.js    const token = new Tokens();    token.setAccessToken(access_token);    token.setRefreshToken(refresh_token);在另一个文件中,我试图弄清楚如何getAccessToken从类中访问该函数。我尝试再次实例化它,但它是错误的,如下所示:调度程序.jsimport Tokens from './models/tokens.js'const test = new Tokens();console.log('xxx',test.getAccessToken())我尝试调用this.getAccessToken(),但它返回未定义。帮助?
查看完整描述

2 回答

?
ibeautiful

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

请注意,此代码未经测试。


查看完整回答
反对 回复 2023-09-28
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

也许你可以尝试使用 JavaScript 的 natvie 类 getters 和 setters 


查看完整回答
反对 回复 2023-09-28
  • 2 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信