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 )
 
} )
 

你可能感兴趣的:(javascript开发)