Я не совсем уверен в этом, но я думаю, что обратный вызов - это то, что происходит, когда страница отправляется на сервер.
Клиент создает делегат для создания делегата для вызова методов JavaScript.
Метод Function.CreateDelegate () действительно полезен.
Скажем, вы хотите обработать событие нажатия кнопки в JavaScript. Объект «this», доступный в функции, которая обрабатывает нажатие кнопки, является кнопкой, по которой был нажат.
Теперь скажите, что у вас есть объект JavaScript, который фиксирует событие нажатия кнопки и что-то делает. Обычно «this» относится к самому объекту JavaScript, но поскольку метод Object используется для обработки события нажатия кнопки, «this» фактически относится к объекту, вызвавшему событие: кнопку.
Чтобы обойти это, был создан метод JavaScript apply . Таким образом, вместо захвата события нажатия кнопки, указав метод объекта JavaScript в методе attachEvent / attachEventListener (или метод $ addHandler () в Ajax.NET Framework), вы фактически использовали бы метод apply () с этими attachEvent / attachEventListener. Это изменяет контекст так, что «this» ссылается на объект JavaScript вместо объекта, вызвавшего событие.
Теперь метод Function.CreateDelegate () делает больше, чем просто использует метод apply при создании клиентского делегата.
Посмотрите на код:
Function.createDelegate = function Function$createDelegate(instance, method) {
/// <summary locid="M:J#Function.createDelegate" />
/// <param name="instance" mayBeNull="true"></param>
/// <param name="method" type="Function"></param>
/// <returns type="Function"></returns>
var e = Function._validateParams(arguments, [
{name: "instance", mayBeNull: true},
{name: "method", type: Function}
]);
if (e) throw e;
return function() {
return method.apply(instance, arguments);
}
}
Есть одна вещь, которую вы должны знать о методе apply (). Когда вы выполняете его, он выполняет метод, который является делегатом. Чтобы обойти это, метод createDelegate делает выше.
Итак, я не совсем уверен, как обратный вызов вписывается в это, но использование метода createDelegate () - хорошая идея, когда ваши объекты JavaScript обрабатывают события, вызванные каким-либо элементом пользовательского интерфейса.
Я предполагаю, что обратный вызов - это действие, которое происходит, когда запрос отправляется из браузера на сервер. Большую часть времени метод __doPostback используется для предварительной обработки обратного вызова. Этот метод принимает 2 параметра ... объект, который вызвал обратную передачу / обратный вызов на сервер, и аргументы для обратной передачи / обратного вызова. Это было бы что-то совершенно другое для клиентского делегата.
Счастливое кодирование
-Frinny