为什么使用'new'创建Angular.js服务?

时间:2015-02-16 11:19:21

标签: angularjs service factories

根据这个问题:

angular.service vs angular.factory

使用new关键字通过angular创建服务,这意味着返回对象的new实例。

例如:

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

然而,对于工厂,他们不是。

这意味着开发人员可以选择创建新实例(通过使用关键字new) - 因此,为什么我称之为工厂。

我的问题是:

为什么angular会创建一个新的服务实例?

我同意服务应该是单例,它们是什么,但最重要的是创建返回函数的新实例?对于服务来说,如果Angular刚刚返回声明的函数,就不会更好 - 就像它们对工厂一样。

这对服务更有意义吗?

我问的原因是因为我在抽象层创建服务,但我不确定是否应该在工厂API上使用服务API,因为创建声明函数的新实例似乎是有点无意义和过度杀伤= \

1 个答案:

答案 0 :(得分:0)

如果你研究这个信息丰富的链接

Informative Link on SO

And yet another link on SO

Just in case the first two SO links were missed, here is yet another

你会发现工厂,服务和提供商之间的唯一区别是运行支持该功能的Anguljarjs开销代码。

如上所述,在服务或工厂的情况下,该服务将使用this.property,并且可能包含其自己的原型函数链添加和常规JS构造函数操作。

您也可以在工厂包装器中执行所有这些操作,但是您不会使用' new'来实现控制器/指令中的工厂。操作