我浏览了Angular2教程,我无法真正理解以下内容之间的区别:
constructor(private _heroService: HeroService) { }
并创建一个对象,例如
var _heroService: HeroService = new HeroService();
答案 0 :(得分:2)
将对象声明为构造函数参数使其成为Dependency Injection
系统的一部分。它通常与服务一起使用,并确保服务是单身。
使用new
关键字实例化对象用于创建不可注入的对象,通常是数据模型。在测试(简单)服务时,有时也会使用它。
答案 1 :(得分:2)
构造函数
constructor(private _heroService: HeroService) { }
时执行
new SomeComponent();
执行,其中构造函数定义需要将哪些参数传递给new Xxx(...)
。例如:
new SomeComponent(new HeroService);
如果Angular new Xxx(...)
创建了一个新实例,则由Angulars DI执行,它会确定从构造函数中自动传递的参数。
如果没有定义构造函数的默认构造函数
constructor(){}
会自动添加到课程中。