Angular JS工厂如何运作?

时间:2015-01-05 10:16:24

标签: javascript angularjs

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

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

  return F1;
})

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

  return new F2();
})

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

[编辑]

您对此解决方案的看法

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

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

  return {createInstance: init);
})

1 个答案:

答案 0 :(得分:0)

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

如果需要多次创建对象的实例,则可以从工厂返回原型。如果你想初始化它,那么从工厂返回新的。

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