Closed yizihan closed 6 years ago
单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回;如果不存在就创建了再返回。这就确保了一个类只有一个实例对象。
在JavaScript中,我们常在管理命名空间时使用单例模式,它可以降低代码中创建全局变量的数量。
const Singleton = { attr: 'value', another_attr: 'another_value', method: function () {...}, another_method: function () {...} } // Singleton是通过对象字面量创建的,无须实例化,并且这个对象仅此一个。 // 通过Singleton这个全局变量入口,访问它内部所有的方法和属性 Singleton.attr Singleton.method
Singleton在JavaScript中的一种使用情形就是创建命名空间。 当通过使用命名空间把代码从全局作用域移动到一个单例中,可以避免全局变量被污染等其他问题。
const Namespace = { Util: {...}, Ajax: {...}, }
function Singleton () { // 判断是否存在实例 if (typeof Singleton.instance === 'object') { return Singleton.instance; } // 其他内容 this.start_time = 0; this.bang = 'Big'; // 缓存 Singleton.instance = this; // 隐式返回this } var single1 = new Singleton(); var single2 = new Singleton(); console.log(single1 === single2); // true
【译】JavaScript设计模式:单例模式 深入理解JavaScript系列(25):设计模式之单例模式
单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回;如果不存在就创建了再返回。这就确保了一个类只有一个实例对象。
在JavaScript中,我们常在管理命名空间时使用单例模式,它可以降低代码中创建全局变量的数量。
一个基本的单例模式
JavaScript命名空间
Singleton在JavaScript中的一种使用情形就是创建命名空间。 当通过使用命名空间把代码从全局作用域移动到一个单例中,可以避免全局变量被污染等其他问题。
实现代码
【译】JavaScript设计模式:单例模式 深入理解JavaScript系列(25):设计模式之单例模式