我有一个用例,我想在一个类中创建一个属性,该类是当前类的新实例。例如:
class Test {
constructor() {
this.prop = new Test()
}
}
const t = new Test();
问题是我得到Maximum call stack size exceeded
。有办法吗?
答案 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
。