varmySingleton =function() {
/* 這里聲明私有變量和方法 */
varprivateVariable = 'something private';
functionshowPrivate() {
console.log(privateVariable);
}
/* 公有變量和方法(可以訪問私有變量和方法) */
return{
publicMethod:function() {
showPrivate();
},
publicVar: 'the public can see this!'
};
};
varsingle = mySingleton();
single.publicMethod();// 輸出 'something private'console.log(single.publicVar);// 輸出 'the public can see this!'
上面的代碼很不錯(cuò)了呈驶,但如果我們想做到只有在使用的時(shí)候才初始化任岸,那該如何做呢乘客?為了節(jié)約資源的目的含潘,我們可以另外一個(gè)構(gòu)造函數(shù)里來初始化這些代碼脖镀,如下:
varSingleton = (function() {
varinstantiated;
functioninit() {
/*這里定義單例代碼*/
return{
publicMethod:function() {
console.log('hello world');
},
publicProperty: 'test'
};
}
return{
getInstance:function() {
if(!instantiated) {
instantiated = init();
}
returninstantiated;
}
};
})();
/*調(diào)用公有的方法來獲取實(shí)例:*/
Singleton.getInstance().publicMethod();
http://www.cnblogs.com/TomXu/archive/2012/02/20/2352817.html