当前位置: 首页 > 知识库问答 >
问题:

为什么在AngularJS中我应该选择使用服务而不是工厂?[副本]

刘意
2023-03-14

我知道这已经被问了很多次了(实际上,很多!),但是我仍然不能完全理解这两者之间的主要区别是什么。

我知道一个服务返回所提供函数的一个单例实例,工厂将简单地调用该函数并返回其值。

但是...

在我看来,你可以用一个或另一个来实现相同的效果,那么我应该如何选择使用哪一个呢?为什么我应该选择服务而不是工厂,或者相反?

是否存在这样一种情况:一方可以做另一方不能做的事情?

共有1个答案

秦胡媚
2023-03-14

简言之

如果希望函数像普通函数一样被调用,请使用factory。如果希望使用新操作符实例化函数,请使用服务。如果您不知道两者的区别,请使用factory

资料来源:

网址:http://iffycan.blogspot.in/2013/05/angular-service-or-factory.html

详细说明

当您使用服务时,您声明的变量和函数将被原型化为新对象,对象将返回给您。在工厂中,它将简单地按原样返回函数。

假设您创建了一个包含10个函数的服务,当您将其作为依赖项包含时,将创建新对象,并且所有函数都将被原型化,检查下面的示例

function Gandalf() {
    this.color = 'grey';
}

Gandalf.prototype.comeBack = function() {
    this.color = 'white';
}

“这个”将被归还。性能问题在这里可以忽略不计。

 类似资料:
  • 问题内容: 但是我仍然不知道您何时在工厂使用服务。 据我所知,工厂通常用于创建可被多个控制器调用的“通用”功能:创建通用控制器功能 Angular文档似乎更喜欢工厂而不是服务。他们甚至在使用工厂时也提到“服务”,这更加令人困惑!http://docs.angularjs.org/guide/dev_guide.services.creating_services 那么什么时候可以使用服务呢? 有什

  • 请容忍我在这里。我知道还有其他答案,比如:AngularJS:服务vs提供商vs工厂 然而,我仍然不知道你什么时候会使用工厂服务。 据我所知,factory通常用于创建可由多个控制器调用的“公共”函数:创建公共控制器函数 Angular的医生似乎更喜欢工厂而不是服务。他们甚至在使用工厂时提到“服务”,这更令人困惑!http://docs.angularjs.org/guide/dev_guide.

  • 为什么这是“良好的编码实践”?例如,当我制作一个石头剪刀游戏机时,大多数人建议使用枚举而不是字符串。有什么区别?

  • 问题内容: 从log.go(执行日志包): 只是一个函数包装器,为什么我应该用它代替or ? 有实际原因吗? 问题答案: 两件事不同: 通过包日志进行打印对于并发goroutine是安全的(而普通的则不是) 日志可以自动添加计时信息。 因此,这是两件完全不同的事情。log用于记录和格式化。(好吧,log使用相同的动词和标志,但这很方便)。

  • 我对这项服务、供应商和工厂有点困惑。AngularJS模块的服务、提供者和工厂之间有什么区别?请讲述并举例说明

  • 问题内容: Python 2.6引入了一个功能。 为什么有这个必要?可以总是输入而不是。 后者更多吗? 问题答案: PEP 3114描述了此更改。动机摘录: 该PEP建议将该方法重命名为,与Python中所有其他协议一致,在该协议中隐式调用方法作为语言级协议的一部分,并引入一个名为的内置函数来调用方法,与显式调用其他协议的方式。 请务必阅读此PEP,以获取更多有趣的细节。 至于为什么 你 要使用内