1、单例模式

单例模式

定义:保证一个类就有一个实例,并提供一个访问它的全局访问点。

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';
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值