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

本文探讨了JavaScript中的惰性实例化技术,通过延迟类的实例化过程,有效节省了资源消耗。介绍了两种实现惰性实例化的方式,并详细解析了其背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值