在啥情况下我们需要在javascript中实现单例类[重复]
Posted
技术标签:
【中文标题】在啥情况下我们需要在javascript中实现单例类[重复]【英文标题】:In what situation do we need to implement singleton class in javsacript [duplicate]在什么情况下我们需要在javascript中实现单例类[重复] 【发布时间】:2015-05-14 15:53:14 【问题描述】:在什么场景下我们需要在javascript中实现Singleton Class如下
var Singleton = (function ()
var instance;
function createInstance()
var object = new Object("I am the instance");
return object;
return
getInstance: function ()
if (!instance)
instance = createInstance();
return instance;
;
)();
function run()
var instance1 = Singleton.getInstance();
var instance2 = Singleton.getInstance();
alert("Same instance? " + (instance1 === instance2));
【问题讨论】:
何时需要一个实例? 控制在其环境中需要或应该是唯一的任何资源。例如。库、覆盖的绘图画布、特定的解析器 ... 【参考方案1】:单例模式是一种将类的实例化限制为一个对象的设计模式。当需要一个对象来协调整个系统的动作时,这很有用。这个概念有时被推广到当只有一个对象存在时运行效率更高的系统,或者将实例化限制为一定数量的对象。该术语来自单例的数学概念。
JavaScript 中最简单的单例实现是:
var Singleton = ;
我们从这个实施中得到什么好处:
-
它只实例化一个对象
它是安全的 - 它将对单例的引用保存在一个变量中,该变量位于一个词法闭包中,外部世界无法访问
它允许您使用一些参数来初始化单例。封装了单例的模块模式不知道初始化参数——它只是用
apply
转发调用
您可以使用instanceof
运算符
【讨论】:
非常感谢您的详细解答 "它允许你用一些参数初始化单例。" 没有什么意义。如果它是一个单例,那么只有一种有效的方法来初始化它,所以你只需对其进行硬编码。以上是关于在啥情况下我们需要在javascript中实现单例类[重复]的主要内容,如果未能解决你的问题,请参考以下文章