如题,目前只想到通过全局变量的模式
var instance = null;
class Cache{
constructor() {
if(!instance){
instance = this;
}
return instance;
}
}
但是明显的,这个方法并不优雅,求大神指点
如题,目前只想到通过全局变量的模式
var instance = null;
class Cache{
constructor() {
if(!instance){
instance = this;
}
return instance;
}
}
但是明显的,这个方法并不优雅,求大神指点
class A {
static created = false
static instance = null
constructor() {
if (!A.created) {
// doSomething
A.instance = {}
A.created = true
}
return A.instance
}
}
需要babel支持 具体可以看 class的静态属性和实例属性
class SingletonService {
/**
* [instance 当前实例]
* @type {this}
*/
static instance;
/**
* [getInstance 获取单例]
* @method getInstance
* @return {[type]} [description]
*/
static getInstance(){
if(false === this.instance instanceof this){
this.instance = new this;
}
return this.instance;
}
/**
* [constructor 构造]
* @method constructor
* @return {object} userInfo
*/
constructor(){
}
}
SingletonService.getInstance()
在外面套一个闭包:
const Singleton = (function () {
let single = void 0
class _Singleton {
constructor () {
if (!single) { single = this }
return single
}
}
return _Singleton
})()
new Singleton() === new Singleton() // true
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决