打字类创建多次调用

时间:2018-08-13 06:45:49

标签: typescript angular6

我对Typescript非常陌生,我有AppComponent类,在构造函数中正在为ServiceProvider创建一个新对象。在servcieProvider构造函数中,再次为ServcieProvider创建一个新对象。根据我的理解,应该两次调用ServiceProvider构造函数,但是在我的情况下,要为ServiceProvider连续创建对象,最后得到一个ERROR RangeError:超出了最大调用堆栈大小。为什么会这样发生。

export class AppComponent {
  constructor(){
   var Service =new ServiceProvider();
  }
}  


export class ServiceProvider{
   name:String;

   constructor(){
        console.log("Invoking-service-provider-constructor");
        var t = new ServiceProvider();
        t.name="Test";
    }
   }

1 个答案:

答案 0 :(得分:0)

您正在ServiceProvider构造函数中创建ServiceProvider的实例,当您创建类的实例时,它将调用该类的构造函数,因此它将递归地调用ServiceProvider的构造方法。在某个时间点,它会创建该类的如此多的实例填满整个堆栈的大小。因此出现错误,因为RangeError:超出了最大调用堆栈大小。