Dojo或Javascript中的观察者
如何在Dojo或Javascript中实现观察者模式?我在幻灯片31的这些幻灯片中找到了Javascript的观察者模式 我已经把它打在这里了Dojo或Javascript中的观察者,javascript,dojo,Javascript,Dojo,如何在Dojo或Javascript中实现观察者模式?我在幻灯片31的这些幻灯片中找到了Javascript的观察者模式 我已经把它打在这里了 // The Observer Object - One who super sees all the print operations function printManager(){ var queue = []; //The attach method this.addJob = function(name, job){
// The Observer Object - One who super sees all the print operations
function printManager(){
var queue = [];
//The attach method
this.addJob = function(name, job){
queue.push({"name":name,"job":job});
}
//the detach method
this.removeJOb = function(job){
var _queue = [];
for(var i in queue){
if(queue[i].job == job)
continue;
else
_queue.push(queue[i]);
}
queue = _queue;
} ...
我对它做了一个修改版本(针对我的使用),效果很好。这对我来说是一个很好的起点。尽管我不确定它是否是Observer模式的直接实现,但Dojo Toolkit已经内置了事件系统 Dojo Connect: connect既可以用于将DOM事件连接到它们的处理程序,也可以用于将任何函数连接到任何其他函数
dojo.connect(obj, event, context, method);
发布/订阅:
Dojo的发布/订阅可用于定义应用程序范围的主题,然后将处理程序附加/分离到它们
dojo.subscribe(topic, method);
dojo.publish(topic, parameters);
链接:
这两种技术都返回一个令牌,该令牌可用于断开处理程序的连接。在Dojo中,这非常简单
dojo.connect
将允许您在任何对象的任何函数上添加回调watch
方法来为任何属性更改添加回调因此,观察者模式只能用于JavaScript中的函数调用。。你知道Google closure是否有相当于dojo.connect的东西吗?不确定,我自己不使用closure库,但你应该阅读Michael Bolin的书closure-权威指南,看看你是否找到了它。