亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從節點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條經驗 獲得超6個贊

您實例化了該類的一個新實例。這就是它未定義的原因。有幾種方法可以解決這個問題。我建議導出創建的模型并在其他文件中使用該模型。


//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 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號