[英]Observer in Dojo or Javascript
如何在Dojo或Javascript中實現觀察者模式?
雖然我不確定它是否是Observer Pattern的直接實現,但Dojo Toolkit已經內置了事件系統。
Dojo Connect: dojo.connect既可以用於將DOM事件連接到其處理程序,也可以用於將任何函數連接到任何其他函數。
dojo.connect(obj, event, context, method);
發布/訂閱: Dojo的發布/訂閱可用於定義應用程序范圍的主題,然后將處理程序附加/分離給它們。
dojo.subscribe(topic, method);
dojo.publish(topic, parameters);
鏈接:
這兩種技術都返回一個可用於斷開處理程序的令牌。
在Dojo,這很容易。
dojo.connect
將允許您在任何對象的任何函數上添加回調。 watch
方法,可以為任何屬性更改添加回調。 現在,在純JavaScript中,它涉及更多,因為您不能在任何任意對象上觸發任何任意屬性更新的回調。 你只能“劫持”一個屬性函數,使它指向一個新函數,並且該函數在調用原始函數后進行回調。 但是,你基本上重新實現了dojo.connect
所以請關注Dojo。
因此,觀察者模式只能用於JavaScript中的函數調用。
我在幻燈片31上的這些幻燈片http://www.slideshare.net/rmsguhan/javascript-design-patterns中找到了javascript的觀察者模式。
我在這里輸入了它
// 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;
} ...
我做了一個這個的修改版本(具體到我使用),它工作得很好。 這對我來說是一個很好的起點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.