您的位置:首页 > Web前端 > JavaScript

Observer Pattern in JavaScript II scope declared when subscribe()

2016-03-31 16:29 645 查看
//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:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: