2017-02-03 21 views
1

2つのクラスとClientがあります。プロパティがある場合Auth.tokenClient.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

はたぶん、このようなイベント・エミッターがhttps://github.com/Olical/EventEmitter – macksol

答えて

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

いくつかの興味深い答えが、私が働くかもしれませんこのように最高です。それは簡単なことで、私はグローバルを持つ必要はありません。ありがとう! – SimonTheEngineer

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();

関連する問題