单例模式
定义:保证一个类就有一个实例,并提供一个访问它的全局访问点。
JavaScript中的单例模式
JavaScript是一门无类(class-free)语言,传统的单例模式实现并不适用。
单例模式的核心:确保只有一个实例,并提供全局访问。
通用的惰性单例
把管理单例的逻辑封装在getSingle函数内部,创建对象的方法 fn 被当成参数动态传入 getSingle 函数:
闭包和高阶函数
var getSingle = function(fn){
var result;
return function(){
return result || (result = fn.apply(this,arguments))
}
}
场:1:登录浮窗在页面上总是唯一的
var createLoginLayer = function(){
var div = document.createElement('div')
div.innerHTML = '我是登录浮窗'
div.style.display = 'none';
document.body.appendChild(div)
return div;
}
var createSingleLoginLayer = getSingle(createLoginLayer);
document.getElementById('loginBtn').onclick = function(){
var loginLayer = createSingleLoginLayer();
loginLayer.style.display = 'block'
}
场景2:创建唯一的iframe用于动态加载第三方页面:
var createSingleIframe = getSingle(function(){
var iframe = document.createElement('iframe');
document.body.appendChild(iframe)
return iframe
})
document.getElementById('loginBtn').onclick = function(){
var loginLayer = createSingleIframe();
loginLayer.src = 'http://baidu.com';
}
8523

被折叠的 条评论
为什么被折叠?



