javascript面向对象编程--惰性实例化(实现按需实例化)

javascript是以对象为基础,以函数为模型,以原型为继承机制的开发模式

惰性实例化:避免在页面中使用javascript初始化执行时就实例化类,而是将一些类的实例化推迟到需要时候才去实例化,避免资源过早的消耗

var myNamespace=function(){

   var Configure=function(){

        var privateName="someone's name";

        var privateReturnName=function(){ return privateName;}

        var privateSetName=function(name){ privateName=name;}

      return {//返回单例对象

         setName:function(name){privateName(name);},

         getName:function(){return privateReturnName();}

     }

    }

 var instance;//存储configure实例

return{

  getInstance:function(){

      if(!instance){instance=Configure();}

     return instance;

    }

 }

}();

myNamespace.getInstance().getName(); //使用时需要getInstance()这个函数作为中间量

//2.不使用中间量的代码,是在上面代码稍作修改

var myNamespace2=function(){

   var Configure=function(){

        var privateName="someone's name";

        var privateReturnName=function(){ return privateName;}

        var privateSetName=function(name){ privateName=name;}

      return {//返回单例对象

         setName:function(name){privateName(name);},

         getName:function(){return privateReturnName();}

     }

    }

 var instance;//存储configure实例

return{

       init:function(){

             if(!instance){instance=Configure();} //如果不存在实例,就创建单例实例

           for(var key in instance){//创建Configure实例

               if(instance.hasOwnProperty(key)){ this[key]=instance[key];}//将该对象的方法赋给myNamespace2

          }

        }

      this.init=null;

      return this;

    }

 }

}();

//使用方式

myNamespace2.init();

myNamespace2.getName();

猜你喜欢

转载自blog.csdn.net/wenmin1987/article/details/83447124