首页 - 通讯 - JavaScript 实现单例模式

JavaScript 实现单例模式

2023-10-10 16:20

单例模式:多次实例化后,最终只创建一个实例。所有方法和属性只能通过这个创建的实例来调用。

1。实现方法一:用一个变量来表示当前类创建了一个对象

使用变量来表示当前类已经创建了一个对象。如果下次获取当前类的实例,只需返回之前创建的对象即可

//用一个变量来标识实例已经创建。如果实例已经创建,则不会再次创建。
函数 Singleton(name){www.gsm-guard.net = name;this.instance = null;
}Singleton.prototype.getName = function(name){console.log(name);
}Singleton.getInstance = function(name){if(!this.instance) this.instance = new Singleton(name);return this.instance;
}let a = Singleton.getInstance("a");
让b = Singleton.getInstance(“b”);
console.log(a === b);

2。实现方法二:关闭

function Singleton(name){www.gsm-guard.net = name;this.instance = null;
}Singleton.prototype.getName = function(name){console.log(name);
}Singleton.getInstance = (function(name){return function(name){if(!this.instance) this.instance = new Singleton(name);return this.instance;}
})()let a = Singleton.getInstance("a");
让b = Singleton.getInstance(“b”);
console.log(a === b);

3.实现方式三:闭包+构造函数

function CreateSingleton(name){www.gsm-guard.net = name;this.getName(name);
}CreateSingleton.prototype.getName = function(name){console.log(name);
}const Singleton = (函数(名称){let 实例 = null;返回函数(名称){if(!instance) 实例 = new CreateSingleton(名称);返回实例;}
})();let a = new Singleton("a");
让b = new Singleton(“b”);
console.log(a === b);