Atualmente, aplicativos nativos e aplicativos da Web são o mainstream, o que significa que várias estruturas de aplicativos da Web baseados no navegador estão se tornando 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.
A cópia do código é a seguinte:
função a (retorno de chamada) {
alerta ('a');
retorno de chamada.call (this); // ou retorno de chamada (), retorno de chamada.apply (this), dependendo da preferência pessoal
}
função b () {
alerta ('b');
}
//Chamar
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:
A cópia do código é a seguinte:
função c (retorno de chamada) {
alerta ('c');
retorno de chamada.call (isto, 'd');
}
//Chamar
c (função (e) {
alerta (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:
A cópia do código é a seguinte:
$ ("#id"). bind ('clique', função (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.
A cópia do código é a seguinte:
<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, função (e) {
retorno de chamada.call (this, that.standadize (e));
}, false);
}
caso contrário, se (document.attachevent)
{
this.Element.attachevent ('on'+evt, function (e) {
retorno de chamada.call (this, that.standadize (e));
});
}
outro
this.Element ['on'+evt] = function (e) {
retorno de chamada.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;
}
outro
{
páginax = document.body.scrollleft+evt.clientx-cocument.body.clientleft;
Pagey = document.body.scrolltop+evt.clienty-cocument.body.clientLtop;
}
if (evt.layerx)
{
camada = evt.layerx;
layery = evt.layery;
}
outro
{
camada = evt.offsetx;
Layerxy = evt.offsety;
}
retornar {
PageX: PageX,
Pagey: Pagey,
camada: camada,
Layery: layery
}
}
}
janela. $ = função (id)
{
retornar novo _ $ (id);
}
$ ('contêiner'). bind ('clique', função (e) {
alerta (e.pagex);
});
$ ('contêiner1'). bind ('clique', função (e) {
alerta (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 é
A cópia do código é a seguinte:
retornar {
PageX: PageX,
Pagey: Pagey,
camada: camada,
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
A cópia do código é a seguinte:
função (e) {
}
callback.call (isto, que.
A cópia do código é a seguinte:
(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.