[英]jquery onSubmit, onComplete, etc
我注意到 jQuery 中內置的很多工具,尤其是那些使用某種 ajax 的工具,都有諸如 onSubmit、onComplete 等鈎子。
是否有這種做法的名稱和表征它的約定?
這種做法的文化是 jQuery 社區的一部分,還是更大的 javascript 現象?
你能推薦一個使用這種方法構建工具的指南嗎?
是的,它被稱為觀察者設計模式。 就此而言,它與 JQuery 甚至 JavaScript 無關。 許多設計模式可以在大多數編程語言中實現。
DevShop是 javascript 的設計模式框架。 他們的觀察者模式是這樣的:
觀察者
(function(){
DevShop.Me({
Observer:function(obj){
var observer=function(){
this.onRegister=function(){};
this.notify=function(eventName,observable){
this.observable=observable;
if(typeof this[eventName]==="function")
try{this[eventName]();}catch(e){}
};
};
return DevShop.SingletonFactory({extend:observer,instance:obj});
}
});
})();
可觀察的
(function(){
DevShop.Me({
Observable:function(obj){
var observable=function(){
this.observers=[];
this.addObserver=function(o){
if(typeof o==="function"||typeof o==="object"){
if(typeof o.notify==="function"){
this.observers.push(o);
if(typeof o.onRegister==="function")
try{o.onRegister();}catch(e){}
}
}
};
this.notifyObservers=function(eventName){
var size=this.observers.length;
for(var x=0;x<size;x++){
try{
this.observers[x].notify(eventName,this);
}catch(e){}
}
};
};
return DevShop.SingletonFactory({extend:observable,instance:obj});
}
});
})();
您可以在此處閱讀有關觀察者設計模式的更多信息: http://en.wikipedia.org/wiki/Observer_pattern
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.