根据角度 js文档
服务(名称,构造函数);name : name constructor : 将被实例化的可注入类(构造函数)。
Internally :
{
$get: function() {
return $injector.instantiate(constructor);
}
}
从角度文档可以得出结论,服务将第二个参数作为构造函数传递,提供者通过 $injector 创建实例并通过 $get 返回。因此,每当我们将服务注入到我们的任何模块函数(控制器、指令等)中时,它都应该返回新创建的对象,即 Singleton offcourse。
现在问题来了,如果我像这样定义我的服务。
1. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
}); //returns object when injected.
2. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
return "123"
}); // returns object when injected.
3. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
return function(){}
}); //returns function(){} when injected. Doesnot return object
为什么第三种情况会返回一个函数?