js自定义消息机制研究学习(二)——做一些改动,定制自己的消息机制
今天我来尝试修改一下代码,以使它更适合我们实际的研发情况。
首先,我们修改一下代码,让它可读性稍微好一点。(原代码参考上文)
monitor.js
var monitor= (function(){ function bind(b){ var queue = this.__MSG_QS__; if (!queue[b]) { queue[b] = [] } for (var a = 1, X = arguments.length, Y; a < X; a++) { queue[b].push(arguments[a]) } } function trigger(Y){ var queue = this.__MSG_QS__[Y.type]; if (queue == null) { return } for (var a = 0, X = queue.length; a < X; a++) { queue[a].handler(Y) } } return { ini: function(X){ X.__MSG_QS__ = {}; X.bind = bind; X.trigger = trigger; return X } }})();好了,现在我们有一个monitor对象了
现在来说说加入我们使用这个对象有可能要应对的情况。
一、将消息直接通知到函数
如果我们要简单监听某个对象里的某个消息,譬如下面代码中这个对象里的sendData消息
View Code
var obj1=monitor.ini({sendData:function(){ this.trigger({type:"sendData",data:"1"});}});我们只是想简单的将这个要发送的数据alert一下,代码如下:
View Code
obj1.bind("sendData",{handler:function(data){ alert(data.data);}});
高兴的事,我们很快写完了。我么可以不要{}呢,也不写handler么?
我们改改monitor,让它能直接将消息发送到函数,对monitor的trigger内的方法做一个简单的更改,如下:
View Code
function trigger(Y){ var queue = this.__MSG_QS__[Y.type]; if (queue == null) { return } for (var a = 0, X = queue.length; a < X; a++) { if(queue[a].handler) { &nbs
- 发表评论
-
- 最新评论 更多>>