惰性实例化要解决的问题是:避免了在页面中 JavaScript 初始化执行的时候就实例化类,如果在页面中没有使用这个实例化的对象,就会造成一定的内存浪费和性能消耗。如果将一些类的实例化推迟到需要使用它的时候才去做,就可以避免资源过早损耗,做到 “按需供应”。
// 惰性实列化代码如下 var myNamespace = function(){ var Configure = function(){ var privateName = "tugenhua"; var privateGetName = function(){ return privateName; }; var privateSetName = function(name) { privateName = name; }; // 返回单列对象 return { setName: function(name) { privateSetName(name); }, getName: function(){ return privateGetName(); } } }; // 存储Configure实列 var instance; return { init: function(){ // 如果不存在实列,就创建单列实列 if(!instance) { instance = Configure(); } // 创建Configure单列 for(var key in instance) { if(instance.hasOwnProperty(key)) { this[key] = instance[key]; } } this.init = null; return this; } } }(); // 调用方式 myNamespace.init(); var name = myNamespace.getName(); console.log(name); // tugenhua
如上代码是惰性化实列代码:它包括一个单体 Configure 实列,直接返回 init 函数,先判断该单体是否被实列化,如果没有被实列化的话,则创建并执行实列化并返回该实列化,如果已经实列化了,则返回现有实列;执行完后,则销毁 init 方法,只初始化一次
参考:理解惰性实列化
时间: 2024-10-14 20:39:44