2016-02-16 3 views
3

Я прошел через учебник Angular2 и я не мог понять разницы между чем-то вроде:Angular2 - вызов конструктора() против нового ключевого слова для создания объекта?

constructor(private _heroService: HeroService) { } 

и созданием объекта, таких как

var _heroService: HeroService = new HeroService();

мог бы вы уточнить?

ответ

2

Объявление объекта как аргумент конструктора делает его частью системы Dependency Injection. Он обычно используется с услугами и гарантирует, что услуги - это однопользовательские.

Создание объектов с помощью ключевого слова new используется для создания объектов, которые не могут быть использованы для инъекций, как правило, для моделей данных. Иногда это также используется при тестировании (простых) сервисах.

2

Конструктор

constructor(private _heroService: HeroService) { } 

выполняется, когда

new SomeComponent(); 

выполняется, где конструктор определяет, какие должны быть переданы new Xxx(...) параметры. Например:

new SomeComponent(new HeroService); 

Если создается новый экземпляр углового new Xxx(...) выполняются по углам главного DI, он выясняет, какие параметры передать автоматически из конструктора.

Если не конструктор не определен конструктор по умолчанию

constructor(){} 

автоматически добавляется к классу.

Смежные вопросы