PureMVC(JS版)源码解析03:Observer类
上篇文章,分析了Notification类(消息类),Notification(消息)是连接观察者(Observer)和通知者(Notifier)之间的桥梁。现在,从代码层面上讲一下Observer类。
通过源码,我们可以看出Observer类有两个属性,分别是notify
和context
,notify
是函数类型,context
是object类型,其中notify
是Observer对象(观察者)接收到消息之后执行的回调函数,context
是回调函数的执行作用域。
/**
* The Observers callback Function
*
* @private
* @type {Function}
*/
Observer.prototype.notify= null;
/**
* The Observers callback Object
* @private
* @type {Object}
*/
Observer.prototype.context= null;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
这两个属性,分别有get/set方法。[setNotifyMethod()
/getNotifyMethod()
/setNotifyContext()
/getNotifyContext()
];
Observer在构造函数中对这两个属性进行了初始化:
function Observer (notifyMethod, notifyContext)
{
this.setNotifyMethod(notifyMethod);
this.setNotifyContext(notifyContext);
};
1
2
3
4
5
6
2
3
4
5
6
此外,Observer类还有一个很重要的方法,就是Observer对象接收到消息执行的notifyObserver()
方法:
/**
* Notify the interested object.
*
* @param {puremvc.Notification} notification
* The Notification to pass to the interested objects notification method
* @return {void}
*/
Observer.prototype.notifyObserver= function (notification)
{
this.getNotifyMethod().call(this.getNotifyContext(), notification);
};
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
上面的代码的意思是在context
(回调函数执行作用域)中调用notify()
方法(回调函数)。
关于Observer类基本上就这几点了:
- notify和context两个属性
- 构造函数中对两个属性的初始化
- notifyObserver()。
接下来的分析Notifier(通知者)类。
上次更新: 2022/12/01, 11:09:34