Observer Pattern in JavaScript II scope declared when subscribe()

//http://www.dustindiaz.com/basement/javascript-observer-class.html

function Observer() {
    this.fns = [];
};
Observer.prototype = {
subscribe : function(fn , scope) {
                this.fns.push({fn: fn, scope: scope});
            },   
unsubscribe : function(fn) {
                  this.fns = this.fns.filter(
                          function(el) {
                          if ( el.fn !== fn ) {
                          return el;
                          }    
                          }    
                          );   
              },   
fire : function(o, thisObj) {
           //var scope = thisObj ;
                   var scope = thisObj ;//|| el.scope ;
           this.fns.forEach(
                   function(el) {
                   el.fn.call( scope|| el.scope ||  windows, o);
                   }    
                   );   
       }    
};


原文中的subscribe()只有1参数 fn,  可以做到修改windows & trigger 2个范围的变量. 在fire(0,thisObj) 中关于scope的定义.

不能修改subscriber接收者的变量. 因此,做了一点修改, 可以修改 subscriber的内部范围的变量.

 

Sample:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值