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 定义。所以你可以在你的控制器中做多次新的。
这两个工厂有什么区别吗?
.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 定义。所以你可以在你的控制器中做多次新的。