4

根据这个问题:

angular.service 与 angular.factory

服务由 angular 使用 new 关键字创建,表示new返回对象的实例。

例如:

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

但是,对于工厂,它们不是。

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

我的问题是:

为什么 Angular 开始创建一个新的服务实例?

我同意服务应该是单例的,它们是,但是创建返回函数的新实例有什么意义呢?对于服务来说,如果 Angular 只返回声明的函数不是更好吗——就像他们对工厂所做的那样。

这对服务不是更有意义吗?

我问的原因是因为我在抽象层上创建服务,但我不确定我是否真的应该在工厂 API 上使用服务 API,只是因为创建声明函数的新实例似乎有点毫无意义,而且矫枉过正=\

4

1 回答 1

0

如果您研究这个非常有用的链接

SO上的信息链接

还有另一个关于 SO 的链接

以防前两个 SO 链接丢失,这里还有另一个

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

在您提到的服务或工厂的情况下,服务将使用 this.property,并且可能包括它自己的函数添加原型链和正常的 JS 构造函数操作。

您也可以在工厂包装器中完成所有这些操作,但您不会使用“新”运算符在控制器/指令中实例化工厂。

于 2015-02-17T19:42:59.390 回答