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