O encadeamento de funções é uma técnica de programação que permite aos desenvolvedores criar uma sequência de operações que são executadas em uma ordem específica. Em JavaScript, isso é conseguido através de uma combinação do retorno da própria função e do uso da palavra-chave this.
Para entender os princípios do encadeamento, vamos examinar um exemplo prático:
var one = function(num) {
this.oldnum = num;
this.add = function() {
this.oldnum ;
return this;
}
if (this instanceof one) {
return this.one;
} else {
return new one(num);
}
}
var test = one(1).add().add();
Neste exemplo, a função one é construída com um número. Ele define uma função add que incrementa a propriedade oldnum e a retorna. A instrução if verifica se a função é chamada como construtor (usando new) e retorna uma nova instância de one if not.
A expressão one(1).add().add() começa criando um new um objeto com valor inicial 1. Em seguida, a função add é chamada duas vezes neste objeto, o que incrementa a propriedade oldnum a cada vez. Por fim, a variável test contém o resultado, que é o único objeto com oldnum definido como 3.
Em contraste, o exemplo a seguir não encadeia corretamente:
var gmap = function() {
this.add = function() {
alert('add');
return this;
}
if (this instanceof gmap) {
return this.gmap;
} else {
return new gmap();
}
}
var test = gmap.add();
Aqui, a função gmap não retorna isso dentro de seus métodos, então o encadeamento é quebrado. A expressão gmap.add() tenta chamar o método add na própria função construtora do gmap, o que não funciona conforme o esperado.
A chave para o encadeamento bem-sucedido é o uso da palavra-chave this, que se refere ao objeto atual. Ao retornar isso dos métodos, o chamador pode acessar o objeto novamente e continuar a sequência de operações.
O encadeamento pode ser uma técnica poderosa para escrever código conciso e expressivo em JavaScript. Ao compreender os princípios descritos acima, os desenvolvedores podem aproveitar efetivamente o encadeamento para aprimorar a funcionalidade de seus aplicativos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3