# 单例模式 > **定义**:**单例模式指的是保证一个类仅有一个实例,且提供一个访问它的全局访问点**。全局缓存,`window`对象,都可以看作是一个单例。 **目的: 解决一个全局使用的类频繁地创建与销毁** #### 使用ES6 class 创建单例: ```javascript class Instance { static init () { if (!this.instance) { this.instance = new Instance() } return this.instance; } } const instance1 = Instance.init() const instance2 = Instance.init() console.log(instance1 === instance2) //true ``` #### 使用闭包创建单例: ```javascript const instance = (function() { let instance = null; return function(name) { if (!instance) { instance = new Singleton(name) } return instance; } }()) ```