Почему Сервисы Angular.js создаются с "новым"?

По этому вопросу:

angular.service против angular.factory

Сервисы создаются под углом с новым ключевым словом, означающим new экземпляр возвращенного объекта.

Например:

app.service('helloWorldService', function() {
    this.hello = function() {
        return "Hello World"; };
    }
);

Однако с фабриками их нет.

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

Мой вопрос:

Почему угловое создание нового экземпляра службы для начала?

Я согласен, что сервисы должны выделяться, какими они являются, но какой смысл создавать новый экземпляр возвращаемой функции? Не было бы лучше для сервисов, если Angular только что возвратил объявленную функцию - так же, как они делают с фабриками.

Разве это не имеет смысла для услуг?

Причина, по которой я спрашиваю, заключается в том, что я на уровне абстракции создаю сервисы, но я не уверен, стоит ли мне действительно использовать API сервисов поверх API фабрик, просто потому что создание нового экземпляра объявленной функции кажется немного бессмысленным и перебор =\

1 ответ

Если вы исследуете эту очень информативную ссылку

Информационная ссылка на SO

И еще одна ссылка на SO

На случай, если первые две ссылки SO были пропущены, вот еще одна

вы обнаружите, что единственное различие между фабрикой, сервисом и поставщиком - это служебный код Anguljarjs, который запускается для поддержки этой функции.

В случае службы или фабрики, как вы упомянули, служба будет использовать this.property и, возможно, включать в себя свою собственную прототипную цепочку дополнений к функциям и обычные действия конструктора JS.

Вы также можете делать все это внутри фабричной оболочки, но не будете создавать экземпляр фабрики в вашем контроллере / директивах, используя оператор 'new'.

Другие вопросы по тегам