Javascript 只有一个实例的类如果不';没有全球范围?

Javascript 只有一个实例的类如果不';没有全球范围?,javascript,design-patterns,Javascript,Design Patterns,我在读关于单身汉的书,到处都提到单身汉不好,因为他们有全球范围。如果我有一个只有一个实例的类,但它不能被全局访问,那么它应该作为依赖项注入-该类仍然是单实例吗?我找到了我自己问题的答案-引用自: 当我们在本文中说“Singleton”或“JVM Singleton”时,我们指的是经典的四人一组的Singleton。(我们说这个单例通过一个静态实例字段强制它自己的“单例性”)。另一方面,“应用程序单例”是一个对象,它在我们的应用程序中只有一个实例,但并不强制执行它自己的“单例性”。 所以基本上他们

我在读关于单身汉的书,到处都提到单身汉不好,因为他们有全球范围。如果我有一个只有一个实例的类,但它不能被全局访问,那么它应该作为依赖项注入-该类仍然是单实例吗?

我找到了我自己问题的答案-引用自:

当我们在本文中说“Singleton”或“JVM Singleton”时,我们指的是经典的四人一组的Singleton。(我们说这个单例通过一个静态实例字段强制它自己的“单例性”)。另一方面,“应用程序单例”是一个对象,它在我们的应用程序中只有一个实例,但并不强制执行它自己的“单例性”。


所以基本上他们区分了两种不同类型的单例类。

谁说单例类可能没有局部作用域?你确定你没有把它们和全局变量混淆吗?我想它们可以。但我的问题是基于这篇文章的,特别是这一行,单身汉只不过是全球国家。全局状态使您的对象可以秘密地获取未在其API中声明的内容,因此,单例使您的API成为病态说谎者。我可能是个白痴,但单例的特征不是该特定类只有一个实例吗?这与作用域有什么关系?是的,“只有一个实例的类”基本上是单例的定义。然而,在许多语言中,类是静态的(不能动态创建),并且是全局可访问的——在javascript中,情况并非如此。据我所知,是的。