实现Observer模式(转载)

http://blog.csdn.net/kentchenj/archive/2007/02/08/1505429.aspx  (转载)

< html >
< head >
< meta http - equiv = " Content-Type "  content = " text/html; charset=GB2312 "   />
< title > 实现Observer模式. </ title >
< script language = JavaScript >
          
function  Observer()  {
            
this.fns = [];
          }

          Observer.prototype 
=   {
            subscribe : 
function(fn) {
                
this.fns.push(fn);
            }
,
            unsubscribe : 
function(fn) {
                
this.fns = this.fns.filter(
                    
function(el) {
                        
if ( el !== fn ) {
                            
return el;
                        }

                    }

                );
          }
,
          fire : 
function(o, thisObj) {
                
var scope = thisObj || window;
                
this.fns.forEach(
                    
function(el) {
                                    
//相当于:window.fn1(参数)  其中,参数是o.fire('xyz')中的xyz,转移成fn1和fn2执行了.
                        el.call(scope, o);
                    }

                );
          }

        }
;        
        
var  o  =   new  Observer;
        
var  fn1  =   function (p)  {
            alert(
"fn1 " + p);
        }
;
        
var  fn2  =   function (p)  {
            alert(
"fn2 " + p);
        }
;
        o.subscribe(fn1);
        o.subscribe(fn2);
        
        o.fire(
' xyz ' );
</ script >   </ head >
< body >
</ body >
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值