2016-07-02 2 views
0

現在、別のオブジェクトの中で宣言される前にオブジェクトを渡す必要がある状況で自分自身を見つけています。どのように私はこれを正確に行うのですか?以下は例です。 2つのオブジェクトは一緒に動作しますが、まだ存在しないものを渡す方法を理解できません。他のオブジェクトの中で宣言される前にオブジェクトを渡す

class fooBar() { 
    this.alpha = new alpha(this.beta); 
    this.beta = new beta(this.alpha); 
} 

class alpha { 
    constructor(beta) { 
     this.beta = beta; 
    } 

    getName() { 
     return "alpha"; 
    } 
} 

class beta { 
    constructor(alpha) { 
     this.alpha = alpha; 
    } 

    getName() { 
     return "beta"; 
    } 
} 
+0

alphaために行われます。それをしないでください。 –

+0

これを解決するための戦略は何ですか? – Asperger

+0

@ J.Titusおそらく何らかのブリッジクラスですか? – Asperger

答えて

1

後で設定することができます。たとえば:

class fooBar() { 
    this.alpha = new alpha(); 
    this.beta = new beta(); 

    this.alpha.setBeta(this.beta); 
    this.beta.setAlpha(this.alpha); 
} 

class alpha { 
    constructor(beta) { 
     if(beta) { 
      this.beta = beta; 
     } 
    } 

    getName() { 
     return "alpha"; 
    } 

    setBeta(beta) { 
     this.beta = beta; 
    } 
} 

class beta { 
    constructor(alpha) { 
     if(alpha) { 
      this.alpha = alpha; 
     } 
    } 

    getName() { 
     return "beta"; 
    } 

    setAlpha(alpha) { 
     this.alpha = alpha; 
    } 
} 

あなたはそれらのメソッド名によってそれらを呼び出す必要はありませんが、アイデアはちょうどあなたには、いくつかのプロパティを設定するために、それぞれのコンストラクタを呼び出した後まで待つことです。

+0

これは循環依存関係ですか? – Asperger

+0

@Asperger、これは循環依存です。 –

0
constructor(beta) { 

    this.beta = beta; 
    if(!this.beta){ 
     var that=this; 
     let jobBeta=setInterval(()=>{ 
       if(beta || beta ===0){ 
         that.beta=beta; 
         clearInterval(jobBeta); 
       } 

      },1) 
    } 
} 

同じことは、他のクラス(その逆)円形の依存と呼ばれる

関連する問題