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!'
上面的代码很不错了,但如果我们想做到只有在使用的时候才初始化,那该如何做呢?为了节约资源的目的,我们可以另外一个构造函数里来初始化这些代码,如下:
varSingleton = (function() {
varinstantiated;
functioninit() {
/*这里定义单例代码*/
return{
publicMethod:function() {
console.log('hello world');
},
publicProperty: 'test'
};
}
return{
getInstance:function() {
if(!instantiated) {
instantiated = init();
}
returninstantiated;
}
};
})();
/*调用公有的方法来获取实例:*/
Singleton.getInstance().publicMethod();
http://www.cnblogs.com/TomXu/archive/2012/02/20/2352817.html
网友评论