Angular JS工厂是如何工作的

How does Angular JS factory work?

本文关键字:工作 何工作 JS 工厂 Angular      更新时间:2023-09-26

这两个工厂有什么区别吗?

.factory("f1", function(){
  var F1 = function() { ... }
  ...
  return F1;
})

.factory("f2", function(){
  var F2 = function() { ... }
  ...
  return new F2();
})

我知道f1返回一个构造函数,f2返回对象的实例,但工厂的想法返回对象的实例。在许多关于角度的教程中,我看到了像f1这样的构造,我开始了解这个工厂是如何工作的,也许他们会自动创建一个对象的实例,而new运算符是无用的?

[ 编辑 ]

您对此解决方案有何看法

.factory("f3", function(options){
  var F3 = function() { ... }
  ...
  var init = function (options){
    return new F3(options);
  }
  return {createInstance: init);
})

是的。 第一个返回类定义,第二个返回类定义的实例。

如果您需要多次创建对象的实例,则可以从工厂返回原型。如果要初始化一次,请从工厂返回新的。

工厂和服务是单例。因此,如果您想多次使用对象,则返回类定义。因此,您可以在控制器中执行多次新功能。