我知道这已被问了很多次(实际上,很多!),但我仍然无法完全理解这两者之间的主要区别是什么。
我知道服务返回所提供函数的单例实例,而 factory 只会调用此函数并返回其值。
但是...
在我看来,你可以使用一个或另一个来实现相同的效果,那么我应该如何选择使用哪一个?我为什么要在工厂上选择服务,或者反过来呢?
是否存在可以做对方无法做到的事情?
答案 0 :(得分:3)
简短
如果希望像普通函数一样调用函数,请使用factory。如果希望使用new运算符实例化函数,请使用service。如果您不知道差异,请使用工厂
来源:
网址:http://iffycan.blogspot.in/2013/05/angular-service-or-factory.html
详细说明
当您使用服务时,您声明的变量和函数将被原型化为新对象,并且对象将返回给您。在工厂里,它会简单地返回功能。
假设您创建了一个包含10个函数的服务,当您将其作为依赖项包含时,将创建新对象并且所有函数都将进行原型化,请查看下面的示例
function Gandalf() {
this.color = 'grey';
}
Gandalf.prototype.comeBack = function() {
this.color = 'white';
}
“此”将被退回。这里的性能问题可以忽略不计。