JavaScript的单例模式 (singleton in Javascript)
JavaScript的单例模式 (singleton in Javascript)
发布时间:2016-12-30 来源:查字典编辑
摘要:单例模式的基本结构:复制代码代码如下:MyNamespace.Singleton=function(){return{};}();比如:复制...

单例模式的基本结构:

复制代码 代码如下:

MyNamespace.Singleton = function() {

return {};

}();

比如:

复制代码 代码如下:

MyNamespace.Singleton = (function() {

return { // Public members.

publicAttribute1: true,

publicAttribute2: 10,

publicMethod1: function() {

...

},

publicMethod2: function(args) {

...

}

};

})();

但是,上面的Singleton在代码一加载的时候就已经建立了,怎么延迟加载呢?想象C#里怎么实现单例的:)采用下面这种模式:

复制代码 代码如下:

MyNamespace.Singleton = (function() {

function constructor() { // All of the normal singleton code goes here.

...

}

return {

getInstance: function() {

// Control code goes here.

}

}

})();

具体来说,把创建单例的代码放到constructor里,在首次调用的时候再实例化:

完整的代码如下:

复制代码 代码如下:

MyNamespace.Singleton = (function() {

var uniqueInstance; // Private attribute that holds the single instance.

function constructor() { // All of the normal singleton code goes here.

...

}

return {

getInstance: function() {

if(!uniqueInstance) { // Instantiate only if the instance doesn't exist.

uniqueInstance = constructor();

}

return uniqueInstance;

}

}

})();

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类