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