JS在相同类型的类中创建属性

时间:2019-03-11 20:49:44

标签: javascript

我有一个用例,我想在一个类中创建一个属性,该类是当前类的新实例。例如:

class Test {

  constructor() {
    this.prop = new Test()
  }

}

const t = new Test();

问题是我得到Maximum call stack size exceeded。有办法吗?

1 个答案:

答案 0 :(得分:2)

实际上,当您进行new Test()时会再次调用该构造函数,因此您将无休止地调用该构造函数。

您可能应该一个接一个地执行此操作,并在要使用Test的下一个实例“加深”对象结构时显式调用一个方法,如下所示:

class Test {    
  constructor() {
    this.child = undefined;
  }
  createChild() {
    return this.child = new Test();
  }
}

const t = new Test();
const child = t.createChild();
const grandChild = child.createChild();
// ...etc

现在,您可以控制此结构的嵌套深度。也许您只想要一个级别的深度?然后仅在第一个实例上调用createChild