单例模式是一种常用的软件设计模式之一,其核心思想是让指定的类只存在唯一的一个实例。
然而,在JavaScript中是没有类,只有对象。所以在某种意义上可以这么说:一个对象就是一个单例。
举个例子:
var obj1 = new Singleton() {};
var obj2 = new Singleton() {};
obj1 === obj2;//true
这时候,可能就会有疑问了,obj1和obj2相等,那岂不是违背了单例的核心思想吗?其实并不是这样的,当你实例化一个对象的时候,主要步骤分为哪些呢?
- 分配内存空间
- 初始化对象
- 将内存空间的地址赋值给对象的引用
所以,obj1和obj2为什么相等呢?因为它们只是同一个对象的不同引用