传入一个对象,然后在另一个对象中声明它

时间:2016-07-02 23:29:06

标签: javascript ecmascript-6

我目前发现自己处于一种情况,我必须在一个对象传入另一个对象之前传入它。我到底该怎么做?以下是一个例子。这两个对象协同工作,但我无法弄清楚如何传递甚至不存在的东西。

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";
    }
}

2 个答案:

答案 0 :(得分: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;
    }
}

您不必通过这些方法名称来调用它们,但这个想法只是等到您调用每个构造函数来设置某些属性之后。

答案 1 :(得分: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)
    }
}

在另一个类alpha中也要做同样的事情(反之亦然)