在JavaScript中,单子指的是一个对象的实例只能被实例化一次。单子保证了一个类不能有多个实例,而只能有一个实例,并且具有全局范围。单子对整个应用程序来说是全局性的,所以有时会造成困难,因为整个应用程序都依赖于它们。
现在,我们将逐一讨论单子类的语法,以及单子的函数。此外,我们还将详细讨论如何访问它们的实例。
JavaScript中的单子方法
有很多方法可以用来声明一个单子,一个非常基本的声明单子的方法是这样的。
var SingletonExample = {
fname: 'joe',
lname: 'clarke',
simpleMethod: function () {
return this.fname + ' ' + this.lname;
},
};
console.log("simpleMethod : ",SingletonExample.simplemethod());
The output of this code will be:
这段代码的输出将是:

JavaScript中的单子类
在JavaScript中实现一个单子类不是很复杂,单子类的基本语法将是。
let check_instance=null;
class employee {
constructor(id, name, city, designation) {
if (!check_instance) {
this.id=id;
this.name=name;
this.city=city;
this.designation=designation;
check_instance=this;
}
else
{
return check_instance;
}
}
}
const emp1 = new employee(1, 'Roman', 'Paris', 'Manager');
console.log("First employee : ",emp1);
在这里,我们创建了一个名为employee的类和一个名为check_instance的空值变量。在这个类中,我们使用if语句来检查实例是否为空,如果实例为空,那么if语句将被执行,否则将直接返回'check_instance'。
输出

现在,创建另一个实例,并检查当我们创建两个单子类的实例时会发生什么。
为此,只需简单地扩展一下上面的代码,创建另一个类的实例并给它分配一些属性。
let check_instance=null;
class employee {
constructor(id, name, city, designation) {
if (!check_instance) {
this.id=id;
this.name=name;
this.city=city;
this.designation=designation;
check_instance=this;
}
else
{
return check_instance;
}
}
}
const emp1 = new employee(1, 'Roman', 'Paris', 'Manager');
const emp2 = new employee(2, 'Seth', ' New York', 'Director');
console.log("First employee : ",emp1);
console.log("Second employee : ",emp2);
现在执行上述代码,观察是否有新的雇员被创建。

输出
输出将验证它并没有创建第二个实例,而是再次返回同一个实例。

结论
单子是最容易理解的设计模式之一。单子模式是创建一个单一对象的方式,该对象可以在整个应用程序的许多不同资源中共享,而不需要重新创建这些对象。如果有人调用一个类的构造函数,它将一次又一次地返回同一个实例。