Estou ocupado com os projetos Android da empresa recentemente, então raramente tenho tempo para escrever algo. Assim que fiquei livre, olhei o que já tinha visto antes. Depois de fazer o Android, sinto mais a importância do desenvolvimento móvel. Agora, aplicativos nativos e aplicativos da Web são o mainstream. Em outras palavras, várias estruturas de aplicativos da Web baseados no navegador se tornarão cada vez mais populares, e aqueles que fazem JS estão se tornando cada vez mais promissores. Também decidi passar gradualmente do desenvolvimento de back-end para o desenvolvimento do front-end e o desenvolvimento móvel. Não vamos falar bobagens, vamos ao tópico da "função de retorno de chamada JS".
Falando em funções de retorno de chamada, embora muitas pessoas saibam o significado, elas ainda têm apenas alguns entendimentos. Quanto a como usá -lo, ainda está um pouco confuso. Algumas coisas relacionadas na Internet não explicaram em detalhes o que aconteceu e são mais unilaterais. Em seguida, vou falar sobre meu entendimento pessoal, não me criticasse. Vamos dar uma olhada em uma definição aproximada "A função A possui um parâmetro, e esse parâmetro é uma função b. Quando a função A é executada, a função B é executada. Em seguida, esse processo é chamado de retorno de chamada." Esta frase significa que a função B é transmitida para a função A na forma de um parâmetro e executada na ordem de executar um primeiro e, em seguida, executar os parâmetros B, B é a chamada função de retorno de chamada. Vamos primeiro olhar para o exemplo a seguir.
função a (retorno de chamada) {alert ('a'); retorno de chamada.call (this); // ou retorno de chamada (), retorno de chamada.apply (this), dependendo da preferência pessoal} função b () {alert ('b'); } // Ligue para a (b);O resultado é que 'A' aparece primeiro e 'B' aparece. Dessa forma, alguém pode perguntar: "Qual é o sentido de escrever esse código? Parece não ser de muita utilidade!"
Sim, eu realmente acho que não faz sentido escrever assim: "Se você chamar uma função, basta chamá -la diretamente na função". Estou apenas escrevendo um pequeno exemplo para você lhe dar um entendimento preliminar. Esse tipo de parâmetros raramente é usado no processo de redação de código, porque na maioria dos cenários, precisamos passar os parâmetros. Aqui está um parâmetro:
função c (retorno de chamada) {alert ('c'); retorno de chamada.call (isto, 'd'); } // Ligue para C (function (e) {alert (e);});Esta chamada parece familiar? Aqui o parâmetro E é atribuído a 'D'. Simplesmente atribuímos o valor aos esguichos de caracteres, mas na verdade também podemos atribuir o valor aos objetos. Existe um parâmetro E no jQuery? Vamos falar sobre isso abaixo
Como o parâmetro E no jQuery é atribuído por um retorno de chamada?
Eu acho que todo mundo está familiarizado com a estrutura do jQuery. Ele foi lançado há muito tempo e é usado durante o desenvolvimento. É relativamente simples. É muito conveniente pesquisar na API on -line e é fácil começar. Sob a estrutura do jQuery, às vezes precisamos obter alguns parâmetros no evento, como as coordenadas do clique atual e o objeto elemento do clique. Este requisito é fácil de lidar no jQuery:
$ ("#id"). bind ('click', function (e) {// e.pagex, e.pagey, e.Target ....... vários dados});É bastante conveniente de usar. De fato, a atribuição deste parâmetro E também é alcançada através da função de retorno de chamada. Este parâmetro recebe um valor de objeto usando o parâmetro de retorno de chamada. Amigos que estudaram cuidadosamente o código -fonte do jjQuery deveriam ter descoberto isso.
Há também o mesmo princípio no parâmetro de dados $ .get ('', {}, function (data) {}).
Vamos dar uma olhada em como a função de retorno de chamada é aplicada no objeto de evento jQuery.
Por conveniência, eu simplesmente escrevi sobre algumas implementações relacionadas a $. Eu escrevi antes que "Xiaotan JQuery" tem um método relativamente próximo da implementação da estrutura. Estou apenas escrevendo um seletor simples abaixo.
<div id = "contêiner"> </div> <cript> var _ $ = function (id) {this.Element = document.getElementById (id); } _ $. prototype = {bind: function (evt, retorno de chamada) {var que = this; if (document.addeventListener) {this.element.addeventListener (evt, function (e) {callback.call (this, that.standadize (e));}, false); } else if (document.attachevent) {this.element.attachevent ('on'+evt, function (e) {callback.call (this, that.standadize (e));}); } else this.Element ['on'+evt] = function (e) {callback.call (this, that.standadize (e)); }; }, StandAdize: function (e) {var evt = e || window.event; var pagex, página, camada, layery; // PageX Camada de coordenadas verticais de coordenadas horizontais Pagex Clique está localizado no clique de Layery de coordenadas horizontais está localizado na coordenada vertical do elemento if (evt.pagex) {PageX = evt.pagex; Pagey = evt.pagey; } else {pagex = document.body.scrollleft+evt.clientx-cocument.body.clientleft; Pagey = document.body.scrolltop+evt.clienty-cocument.body.clientLtop; } if (evt.layerx) {Layerx = evt.layerx; layery = evt.layery; } else {Layerx = evt.offsetx; Layerxy = evt.offsety; } retornar {PageX: PageX, Pagey: Pagey, Layerx: Layerx, Layery: Layery}}} Window. $ = function (id) {return _ $ (id); } $ ('contêiner'). bind ('click', function (e) {alert (e.pagex);}); $ ('contêiner1'). bind ('clique', função (e) {alert (e.pagex);}); </script>Examinamos principalmente a implementação da função StandAdize. Não vou dizer muito sobre este código, o objeto de retorno é
Return {PageX: PageX, Pagey: Pagey, Layerx: Layerx, Layery: Layery}Em seguida, observe o retorno de chamada do código.call (this, that.standadize (e)) na função de ligação. Este código é realmente atribuído um valor ao parâmetro E, que é implementado usando um retorno de chamada.
A função anônima é passada quando a função de retorno de chamada é chamada
função (e) {}callback.call (isto, que.
(função (e) {}) (StandAdize (e))Esta também é a coisa clássica sobre o jQuery usando funções de retorno de chamada. É assim que o parâmetro E é atribuído. Depois de dizer isso, você provavelmente tem um bom entendimento disso e como usá -lo.
Os retornos de chamada são usados com mais frequência em várias estruturas. Às vezes, ao escrever algo sozinho, você também pode usá -lo de acordo com a situação real.
As visualizações acima sobre funções de retorno de chamada no JS são todo o conteúdo que eu compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.