Я недавно занят компанией Android Projects, поэтому я редко трачу время, чтобы что -то написать. Как только я освободился, я просмотрел то, что видел раньше. После того, как я занимался Android, я чувствую больше важности мобильного развития. Теперь нативные приложения и веб -приложения являются основными. Другими словами, различные фреймворки веб-приложений на основе браузеров станут все более и более популярными, и те, кто делают JS, становятся все более и более перспективными. Я также решил постепенно перейти от заднего развития к фронтальной разработке и мобильной разработке. Давайте не будем говорить о чушь, давайте перейдем к теме «Функция обратного вызова JS».
Говоря о функциях обратного вызова, хотя многие люди знают смысл, у них все еще есть лишь несколько пониманий. Что касается того, как его использовать, это все еще немного смущено. Некоторые связанные вещи в Интернете не объяснили подробно, что произошло, и они более односторонние. Далее я просто расскажу о своем личном понимании, не критикую меня. Давайте посмотрим на грубое определение «Функция A имеет параметр, и этот параметр является функцией b. Когда функция A выполняется, функция B выполняется. Затем этот процесс называется обратным вызовом». Это предложение означает, что функция B передается в функцию A в форме параметра и выполняется в порядке выполнения первого, а затем выполнения параметров B, B-так называемая функция обратного вызова. Давайте сначала посмотрим на следующий пример.
функция a (обратный вызов) {alert ('a'); callback.call (this); // или callback (), callback.apply (this), в зависимости от личных предпочтений} function b () {alert ('b'); } // Вызов A (b);Результат заключается в том, что «A» появляется первым, а «B» появляется. Таким образом, кто -то может спросить: «Какой смысл написать такой код? Это не очень полезно!»
Да, я на самом деле думаю, что это бессмысленно писать так: «Если вы называете функцию, просто позвоните ее непосредственно в функции». Я просто пишу небольшой пример для вас, чтобы дать вам предварительное понимание. Этот вид без параметра редко используется в процессе действительно написания кода, потому что в большинстве сценариев мы должны передавать параметры. Вот параметр:
Функция C (обратный вызов) {alert ('c'); callback.call (this, 'd'); } // call c (function (e) {alert (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 = "container"> </div> <script> var _ $ = function (id) {this.element = document.getElementById (id); } _ $. Prototype = {bind: function (evt, callback) {var that = this; if (document.addeventlistener) {this.element.addeventListener (evt, function (e) {callback.call (this, that.standize (e));}, false); } else if (document.attachevent) {this.element.attachevent ('on'+evt, function (e) {callback.call (this, that.standize (e));}); } else this.element ['on'+evt] = function (e) {callback.call (это, это. }; }, StandAdize: function (e) {var evt = e || window.event; var pagex, pagey, layerx, слои; // pagex горизонтальная координата Pagey Vertical Comportinate Layerx Click расположен на горизонтальной координат. Клипник находится на вертикальной координате элемента if (evt.pagex) {pagex = evt.pagex; pagey = evt.pagey; } else {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; } else {layerx = evt.offsetx; Layerxy = evt.Offsety; } return {pagex: pagex, pagey: pagey, layerx: layerx, shayery: shayery}}} window. $ = function (id) {return new _ $ (id); } $ ('контейнер'). bind ('click', function (e) {alert (e.pagex);}); $ ('intainer1'). Bind ('click', function (e) {alert (e.pagex);}); </script>В основном мы рассмотрим реализацию функции Standadize. Я не скажу много об этом коде, объект возврата
return {pagex: pagex, pagey: pagey, layerx: layerx, shayery: shayery}Затем посмотрите на CODE CALLBACK.CALL (это, это. Этот код на самом деле присваивается значение параметру E, который реализован с использованием обратного вызова обратного вызова.
Анонимная функция передается, когда вызывается функция обратного вызова
функция (e) {}callback.call (это, что.
(function (e) {}) (Standadize (e))Это также классическая вещь о jQuery с использованием функций обратного вызова. Так назначается параметр E. Сказав это, вы, вероятно, хорошо понимаете это и как его использовать.
Обратные вызовы используются чаще в различных рамках. Иногда при написании чего -либо самостоятельно вы также можете использовать его в соответствии с реальной ситуацией.
Приведенные выше представления о функциях обратного вызова в JS - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.