js设计模式-单例模式(1)

mac2026-08-29  9

问题情境 有些节点如登录浮窗,*且可以全局访问? *只需有一个实例即可,重复实例化多个比较耗资源解决思路 实例化之前加个判断(flag),若创建过则直接返回当前实例。 具体实现 1.传统面向对象,用类的属性来保存instance Singleton.instance = null; Singleton.getInstance = function(){ if (!this.instance) { this.instance = new CreateInstance(); } return this.instance; } 2.在JavaScript中,使用高阶函数,用闭包来保存instance var getSingle = function(fn){ var result; return function(){ result || ( result = fn.apply(this, arguments) ); } } var a = getSingle(createDiv); var b = getSingle(createDiv); a === b;//true JavaScript 中的单例模式

没有类的概念,直接创建对象即可。 全局变量就是一个单例。但是很容易命名污染,因此采用命名空间可减少全局变量;或者采用闭包保存局部变量

优缺点 惰性单例,需要的时候再创建。
最新回复(0)