Angular JS 工厂是如何工作的?

How does Angular JS factory work?

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

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

  return F1;
})

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

  return new F2();
})

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

[编辑]

您对这个解决方案有何看法

.factory("f3", function(options){
  var F3 = function() { ... }
  ...

  var init = function (options){
    return new F3(options);
  }

  return {createInstance: init);
})

是的。第一个 returns class 定义和第二个 returns class 定义的实例。

如果您需要多次创建一个对象的实例,那么您可以 return 从工厂创建原型。如果你想初始化一次,那么 return 新出厂。

工厂和服务是单例的。所以如果你想多次使用对象然后 return class 定义。所以你可以在你的控制器中做多次新的。