Почему Сервисы Angular.js создаются с "новым"?
По этому вопросу:
angular.service против angular.factory
Сервисы создаются под углом с новым ключевым словом, означающим new
экземпляр возвращенного объекта.
Например:
app.service('helloWorldService', function() {
this.hello = function() {
return "Hello World"; };
}
);
Однако с фабриками их нет.
Это означает, что разработчик может, если они захотят, создавать новые экземпляры (используя ключевое слово new
) - следовательно, почему его называют фабрикой, я предполагаю.
Мой вопрос:
Почему угловое создание нового экземпляра службы для начала?
Я согласен, что сервисы должны выделяться, какими они являются, но какой смысл создавать новый экземпляр возвращаемой функции? Не было бы лучше для сервисов, если Angular только что возвратил объявленную функцию - так же, как они делают с фабриками.
Разве это не имеет смысла для услуг?
Причина, по которой я спрашиваю, заключается в том, что я на уровне абстракции создаю сервисы, но я не уверен, стоит ли мне действительно использовать API сервисов поверх API фабрик, просто потому что создание нового экземпляра объявленной функции кажется немного бессмысленным и перебор =\
1 ответ
Если вы исследуете эту очень информативную ссылку
На случай, если первые две ссылки SO были пропущены, вот еще одна
вы обнаружите, что единственное различие между фабрикой, сервисом и поставщиком - это служебный код Anguljarjs, который запускается для поддержки этой функции.
В случае службы или фабрики, как вы упомянули, служба будет использовать this.property и, возможно, включать в себя свою собственную прототипную цепочку дополнений к функциям и обычные действия конструктора JS.
Вы также можете делать все это внутри фабричной оболочки, но не будете создавать экземпляр фабрики в вашем контроллере / директивах, используя оператор 'new'.