JQuery OnSubmit, OnComplete и т. д. - PullRequest
       10

JQuery OnSubmit, OnComplete и т. д.

0 голосов
/ 08 июля 2011

Я заметил, что многие инструменты, встроенные в jQuery, и особенно те, которые используют какой-то ajax, имеют такие ловушки, как onSubmit, onComplete и т. Д.

Есть ли название для этой практики и конвенции, которые ее характеризуют?

Является ли культура этой практики частью сообщества jQuery или это явление более крупного javascript?

Можете ли вы порекомендовать руководство по созданию инструментов, использующих эту методологию?

1 Ответ

2 голосов
/ 08 июля 2011

Да, это называется шаблон проектирования Observer.В этом отношении он не изолирован от 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});
        }
    });
})();

Вы можете прочитать больше ошаблон проектирования Observer здесь: http://en.wikipedia.org/wiki/Observer_pattern

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...