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:
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:
相关文章推荐
- jsp#1简单jsp开发
- jstl中的<fmt:formatNumber>标签
- 关于JavaScript命名空间的一些心得
- [原创作品]Javascript内存管理机制
- phantomjs 安装和试用
- Rhino -- 基于java的javascript实现
- js中关于date()的扩展
- jsp入门学习
- FastJSON、Jackson和Gson用法
- javascript中错误使用var造成undefined
- js的页面初始化,修改div的值,查询多选框的val
- js操作cookie
- 详解JavaScript表单验证(E-mail 验证)
- js表单验证实例讲解
- js数组去重
- js中的问题(this)(遍历对象中的属性)
- 常见问题之加法操作符(读书笔记)
- js设计模式-原型模式
- javascript对时间的校验操作
- 关于javascript中的dataset