Javascript JS在同一类型的类中创建属性

Javascript JS在同一类型的类中创建属性,javascript,Javascript,我有一个用例,我想在一个类中创建一个属性,这个类是当前类的一个新实例。例如: class Test { constructor() { this.prop = new Test() } } const t = new Test(); 问题是我得到了超过最大调用堆栈大小的。有办法吗?事实上,当您执行newtest()时,会再次调用构造函数,因此您会得到对构造函数的无休止的调用 当您想用下一个Test实例“深化”对象结构时,您可能应该一个接一个地执行此操作,并显式调用一个方法

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

class Test {

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

}

const t = new Test();

问题是我得到了超过最大调用堆栈大小的
。有办法吗?

事实上,当您执行
newtest()
时,会再次调用构造函数,因此您会得到对构造函数的无休止的调用

当您想用下一个
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

实际上,当您执行
newtest()
时,会再次调用构造函数,因此您会得到对构造函数的无休止的调用

当您想用下一个
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

好吧,每个测试都在创建一个内部测试,它正在创建一个内部测试…您要创建多少个对象?如果要避免异常,请在某个位置停止。否则代码就可以了,它可以做你想要的。我想把它设置为onceo内部
Test
不应该有这个属性?是否应该有不同的值,
未定义
?传递一个参数来告诉它这样做。不,不应该。每个测试都在创建一个内部测试,而这个内部测试正在创建一个内部测试…您要创建多少个对象?如果要避免异常,请在某个位置停止。否则代码就可以了,它可以做你想要的。我想把它设置为onceo内部
Test
不应该有这个属性?是否应该有不同的值,
未定义
?传递一个参数来告诉它这样做。不,它不应该这样做。问题是我需要调用super()。有办法吗?当然有。有什么问题吗?如果我调用super(),我仍然会得到一个无限循环。除非你有其他代码负责循环。但是你的问题不是关于超级的,所以你的问题真的是关于你实际问的以外的东西吗?;-)问题是我需要调用super()。有办法吗?当然有。有什么问题吗?如果我调用super(),我仍然会得到一个无限循环。除非你有其他代码负责循环。但是你的问题不是关于超级的,所以你的问题真的是关于你实际问的以外的东西吗?;-)