单例模式的基本结构: 复制代码 代码如下: 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; } } })();
推荐阅读
location.search在客户端获取Url参数的方法
复制代码 代码如下: var id; function getid() { var url=location.search; var Request = new Object(); if(url.indexOf("?")!=-1) { var str = url.substr(1) //去掉?号 strs = str.split("&"); for(var i=0;i<s>>>详细阅读
本文标题:JavaScript的单例模式 (singleton in Javascript)
地址:http://www.17bianji.com/kaifa2/JS/26219.html
1/2 1