JS创建单例模式的方法

90 阅读1分钟

1.使用ES6的类的方法创建单例模式

class Singleton{
    constructor(){
        if (!Singleton.instance) {
            this.name="zhangsan;
            Singleton.instance = this;
        }
        return Singleton.instance;
    }
}

由于构造函数Singleton也是对象,所以我们可以将实例的引用记录在Singleton的一个属性(instance)上,当该属性为空时创建实例,否则返回Singleton上记录的实例。

2.使用闭包创建单例模式

const Singleton=(function(){
	let instance;

	function init(){
		this.name="zhangsan";
	}

	return function(name){
		if(!instance){
			instance=new init();
		}
		return instance;
	};
})();

3.使用instance获取单例

class Singleton{
    constructor(){
        this.name="zhangsan";
    }

    static getInstance(){
        if(!Singleton.instance){
            Singleton.instance=new Singleton();
        }
        return Singleton.instance();
    }
}