我有一个用例,我想在一个类中创建一个属性,这个类是当前类的一个新实例。例如:
class Test {
constructor() {
this.prop = new Test()
}
}
const t = new Test();
问题是我得到了Maximum call stack size exceeded
。有什么办法可以做到吗?
发布于 2019-03-12 04:53:26
实际上,当您执行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
。
https://stackoverflow.com/questions/55110198
复制相似问题