的Singleton
单例是一种特殊的类,只能实例化一次, 根据angularJs文件,服务和工厂是Singleton。
因此,如果我们像这样定义app.service('b', fn)
根据文件,Angular JS将服务称为
cache.b = new fn();
所以b的存储值来自新的fn。
所以我可以理解angular create instance本身,所以我们不能再创建新实例,所以service是singleton。
但是当像这样定义app.factory(‘a’, fn)
时,存储的值来自运行fn。
Angular call cache.a = fn();
所以没有'新'或oops的概念。那么这里有什么实例化的对象概念以及工厂如何单独使用?因为单例是一种特殊的类,只能实例化一次。
如果回答将会感激。
答案 0 :(得分:0)
你是对的,angular会使用
实例化工厂cache.a = fn();
但在此代码之前,它会检查缓存的变量是否不是对象。
因此,完整的代码可能如下
if (\\Check whether cache.a is not an object){
cache.a = fn();
}
在工厂中,实例化一个类并返回该对象,angularjs调用工厂函数并将返回的值缓存到某处。当你每次尝试在某处注入工厂时,它会检查缓存变量是否不是对象,如果angularjs发现变量不是对象,它会调用工厂函数。