我刚刚开始学习Angular JS Framework,我得到了一些非常奇怪的东西

问题描述 投票:0回答:1

独生子

单例是一种特殊的类,只能实例化一次,根据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的概念。那么这里有什么实例化的对象概念以及工厂如何单独使用?因为单例是一种特殊的类,只能实例化一次。

如果回答,将会感激。

javascript angularjs
1个回答
0
投票

你是对的,angular会实例化一个工厂使用

cache.a = fn();

但在此代码之前,它会检查缓存的变量是否不是对象。

因此,完整的代码可以如下

if (\\Check whether cache.a is not an object){
    cache.a = fn();
}

在工厂中,实例化一个类并返回该对象,angularjs调用工厂函数并在某处缓存返回的值。当你每次尝试在某个地方注入工厂时,它会检查缓存的变量是否不是一个对象,如果angularjs发现变量不是一个对象,它会调用工厂函数。

© www.soinside.com 2019 - 2024. All rights reserved.