单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。
在JavaScript中实现单例模式的方法有多种,以下是其中两种比较常见的方法:
使用闭包可以创建一个只有一个实例的对象。
var Singleton = (function () {
var instance;
function init() {
// 单例代码
return {
publicMethod: function () {
console.log('public method');
},
publicProperty: 'public property'
};
}
return {
getInstance: function () {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
// 使用
var singleton1 = Singleton.getInstance();
var singleton2 = Singleton.getInstance();
console.log(singleton1 === singleton2); // true
使用ES6中的class可以更直观地创建一个单例对象。
class Singleton {
constructor() {
if (!Singleton.instance) {
// 单例代码
Singleton.instance = this;
}
return Singleton.instance;
}
}
// 使用
const singleton1 = new Singleton();
const singleton2 = new Singleton();
console.log(singleton1 === singleton2); // true