首页 > 代码库 > javascript 设计模式1----单例模式
javascript 设计模式1----单例模式
定义:保证一个类仅有一个实例,并提供一个访问的全局接口:
就是收:当我们 var a = new a(); var a1 = new a()是;a与a1是相等的。怎么实现呢,就是第一次实例化。第二不在实例,只是返回第一次的实例化:
附上通用的惰性单例思路:
Singleton.getInstance = (function () { var instance = null; return function (name) { if( !instance){ instance = new Singleton(name); } return instance; }})()
一个书上的登录框的例子:
var createLoginLayer = (function () { var div; return function () { if(!div){ div = document.createElement(‘div‘); div.innerHTML = ‘我是登录‘; div.style.display = ‘none‘; document.body.appendChild(div); } return div; }})() document.getElementById(‘div1‘).onclick = function () { var loginLayer = createLoginLayer(); loginLayer.style.display = ‘block‘; }
通用的惰性单例:
var getSingle = function (fn) { var result; return function () { return result || (result = fn.apply( this,arguments)); }}var createLoginLayer = function () { var div = document.createElement(‘div‘); div.innerHTML = ‘WOSHI DENGLU‘; div.style.display = ‘none‘; document.body.appendChild(div); return div;}var createSingleLoginLayer = getSingle(createLoginLayer); document.getElementById(‘div1‘).onclick = function () { var loginLayer = createSingleLoginLayer(); loginLayer.style.display = ‘block‘; } //在创建一个唯一的iframe var createSingleframe = getSingle(function () { var iframe = document.createElement(‘iframe‘); document.body.appendChild(iframe); return iframe; }) document.getElementById(‘div1‘).onclick = function () { var loginLayer = createSingleframe(); loginLayer.src = ‘http://baidu.com‘ }
javascript 设计模式1----单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。