js设计模式-桥接模式-单例包装器

用一个变量来保存第一次的返回值, 如果它已经被赋值过, 那么在以后的调用中优先返回该变量. 而真正创建遮罩层的代码是通过回调函数的方式传人到singleton包装器中的. 这种方式其实叫桥接模式.

桥接模式的作用在于将实现部分和抽象部分分离开来, 以便两者可以独立的变化。

能不能找到一个通用的singleton包装器?
遗憾的是js的函数式特性还不足以完全的消除声明和语句.

// 是抽象部分

var singleton function(fn){
    var res;
    return res|| res = fn.apply(this,arguments);
}
// 实现部分
var  creatMask = singleton(function(){
    return document.body.appendChild(document.createElement(div));

});

//迭代数组

forEach = function( ary, fn ){
  for ( var i = 0, l = ary.length; i < l; i++ ){
    var c = ary[ i ];
    if ( fn.call( c, i, c ) === false ){
      return false;
    }
   }
}

forEach ( [ 1 , 2 , 3 ] , function ( i , n ) {
 
alert ( n * 2 )
 
} )
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值