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