Обратный вызов прототипа Javascript

#javascript #jquery #callback #prototype-programming

#javascript #jquery #обратный вызов #прототип-программирование

Вопрос:

Я видел этот потрясающий пост Джона Ресига о «Создании экземпляра простого класса»: http://ejohn.org/blog/simple-class-instantiation /

Итак, я начал создавать скрипты таким образом, но, к сожалению, это вызвало некоторые проблемы и путаницу.

Я работаю над своего рода «пользовательской диалоговой платформой», где одновременно должно быть возможно просматривать только одно диалоговое окно, и если вы отклоняете одно, появляется следующее. Давайте назовем это очередью диалога.

Во-вторых, он должен выполнить продолжить или отменить в зависимости от того, что выберет пользователь. Итак, мы могли бы использовать его следующим образом:

 var dialog = UIDialog();
dialog.proceed(function() {
    // Do stuff
});
dialog.cancel(function() {
    // Do stuff
});
  

В настоящее время у меня есть этот код:http://pastebin.com/sGyjArfA
Прямо сейчас очередь диалоговых окон, кажется, работает, но я совершенно не понимаю, как мне заставить обратный вызов работать.

Комментарии:

1. Штука с обратным вызовом … вы можете быть более конкретными? Требуется ли обратный вызов при выполнении proceed и при выполнении cancel?

Ответ №1:

Вам нужно сохранить обратные вызовы в объекте dialog, а затем просто вызывать их в подходящее время. Например.,

 UIDialog.prototype.proceed = function(callback) { this.cbProceed = callback; }
  

И затем в логике диалога, которая обрабатывает логику продолжения, просто вызовите обратный вызов, если он установлен:

 if (this.cbProceed amp;amp; jQuery.isFunction(this.cbProceed))
  this.cbProceed();