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

目前正在创建一个节点项目,并创建了一个如下所示的模型:


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从类中访问该函数。


我尝试再次实例化它,但它是错误的,如下所示:


调度程序.js


import Tokens from './models/tokens.js'


const test = new Tokens();

console.log('xxx',test.getAccessToken())

我尝试调用this.getAccessToken(),但它返回未定义。


帮助?


隔江千里
浏览 78回答 2
2回答

ibeautiful

您实例化了该类的一个新实例。这就是它未定义的原因。有几种方法可以解决这个问题。我建议导出创建的模型并在其他文件中使用该模型。//model.js   const token = new Tokens();    token.setAccessToken(access_token);    token.setRefreshToken(refresh_token);    export default token; // scheduler.jsimport { 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.jsimport Tokens from './models/tokens.js'const test = TokenSingleton.getInstance();console.log('xxx',test.getAccessToken()) // xxx, test请注意,此代码未经测试。

呼啦一阵风

也许你可以尝试使用 JavaScript 的 natvie 类 getters 和 setters 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript