В настоящее время нативные приложения и веб-приложения являются основными, что означает, что различные фреймворки веб-приложений на основе браузеров становятся все более популярными, и те, кто делает JS, становятся все более и более перспективными. Я также решил постепенно перейти от заднего развития к фронтальной разработке и мобильной разработке. Давайте не будем говорить о чушь, давайте перейдем к теме «Функция обратного вызова JS».
Говоря о функциях обратного вызова, хотя многие люди знают смысл, у них все еще есть лишь несколько пониманий. Что касается того, как его использовать, это все еще немного смущено. Некоторые связанные вещи в Интернете не объяснили подробно, что произошло, и они более односторонние. Далее я просто расскажу о своем личном понимании, не критикую меня. Давайте посмотрим на грубое определение «Функция A имеет параметр, и этот параметр является функцией b. Когда функция A выполняется, функция B выполняется. Затем этот процесс называется обратным вызовом». Это предложение означает, что функция B передается в функцию A в форме параметра и выполняется в порядке выполнения первого, а затем выполнения параметров B, B-так называемая функция обратного вызова. Давайте сначала посмотрим на следующий пример.
Кода -копия выглядит следующим образом:
Функция A (обратный вызов) {
оповещение ('a');
callback.call (this); // или callback (), callback.apply (это), в зависимости от личных предпочтений
}
функция b () {
оповещение ('b');
}
//Вызов
a (b);
Результат заключается в том, что «A» появляется первым, а «B» появляется. Таким образом, кто -то может спросить: «Какой смысл написать такой код? Это не очень полезно!»
Да, я на самом деле думаю, что это бессмысленно писать так: «Если вы называете функцию, просто позвоните ее непосредственно в функции». Я просто пишу небольшой пример для вас, чтобы дать вам предварительное понимание. Этот вид без параметра редко используется в процессе фактического написания кода, потому что в большинстве сценариев мы должны передавать параметры. Вот параметр:
Кода -копия выглядит следующим образом:
Функция C (обратный вызов) {
оповещение ('c');
callback.call (this, 'd');
}
//Вызов
c (функция (e) {
предупреждение (e);
});
Этот вызов выглядит знакомым? Здесь параметр E присваивается 'D'. Мы просто присваиваем значение впрыскиваниям символов, но на самом деле мы также можем присвоить значение объектам. Есть ли параметр E в jQuery? Поговорим об этом ниже
Как параметр E в jQuery назначен обратным вызовом?
Я думаю, что все знакомы с рамки jQuery. Он был выпущен в течение долгого времени и используется во время разработки. Это относительно просто. Очень удобно искать API в Интернете, и его легко начать. В рамках Jquery Framework нам иногда нужно получить некоторые параметры в случае, таких как координаты текущего клика и объект элемента щелчка. С этим требованием легко справиться в jQuery:
Кода -копия выглядит следующим образом:
$ ("#id"). Bind ('click', function (e) {
//e.pagex, E.Pagey, E.Target ...... различные данные
});
Это довольно удобно в использовании. Фактически, назначение этого параметра E также достигается с помощью функции обратного вызова. Этот параметр присваивается значение объекта с использованием параметра обратного вызова. Друзья, которые тщательно изучили исходный код JJQuery, должны были обнаружить это.
Существует также тот же принцип в параметре данных AJAX $ .get ('', {}, function (data) {}).
Давайте посмотрим, как применяется функция обратного вызова в объекте события JQUERY.
Для удобства я просто написал о некоторых реализациях, связанных с $. Я написал до того, что «Xiaotan jQuery» имеет относительно близкий метод реализации Framework. Я просто пишу простой селектор ниже.
Кода -копия выглядит следующим образом:
<div id = "контейнер">
</div>
<Скрипт>
var _ $ = function (id)
{
this.element = document.getElementById (id);
}
_ $. Prototype = {
Bind: function (evt, обратный вызов)
{
var that = это;
if (document.addeventlistener)
{
this.element.addeventlistener (evt, function (e) {
callback.call (это, что.
} ,ЛОЖЬ);
}
иначе if (document.attachevent)
{
this.element.attachevent ('on'+evt, function (e) {
callback.call (это, что.
});
}
еще
this.element ['on'+evt] = function (e) {
callback.call (это, что.
};
},
StandAdize: function (e) {
var evt = e || window.event;
var pagex, pagey, layerx, слои;
// Pagex Горизонтальная координата Pagey Вертикальная координата Layerx Click расположен на горизонтальной координатной слои. Нажмите на вертикальную координату элемента
if (evt.pagex)
{
pagex = evt.pagex;
pagey = evt.pagey;
}
еще
{
pagex = document.body.scrollleft+evt.clientx-document.body.clientleft;
pagey = document.body.scrolltop+evt.clienty-document.body.clientltop;
}
if (evt.layerx)
{
layerx = evt.layerx;
Layery = evt.layery;
}
еще
{
layerx = evt.offsetx;
Layerxy = evt.Offsety;
}
возвращаться {
pagex: pagex,
Pagey: Pagey,
Layerx: Layerx,
Слои: слои
}
}
}
окно. $ = function (id)
{
вернуть новый _ $ (id);
}
$ ('контейнер'). Bind ('click', function (e) {
оповещение (e.pagex);
});
$ ('container1'). Bind ('Щелкни «клик», функция (e) {
оповещение (e.pagex);
});
</script>
В основном мы рассмотрим реализацию функции Standadize. Я не скажу много об этом коде, объект возврата
Кода -копия выглядит следующим образом:
возвращаться {
pagex: pagex,
Pagey: Pagey,
Layerx: Layerx,
Слои: слои
}
Затем посмотрите на CODE CALLBACK.CALL (это, это. Этот код на самом деле присваивается значение параметру E, который реализован с использованием обратного вызова обратного вызова.
Анонимная функция передается, когда вызывается функция обратного вызова
Кода -копия выглядит следующим образом:
функция (e) {
}
Callback.call (это, что.
Кода -копия выглядит следующим образом:
(функция (e) {
}) (Standadize (e))
Это также классическая вещь о jQuery с использованием функций обратного вызова. Так назначается параметр E. Сказав это, вы, вероятно, хорошо понимаете это и как его использовать.
Обратные вызовы используются чаще в различных рамках. Иногда при написании чего -либо самостоятельно вы также можете использовать его в соответствии с реальной ситуацией.