O que é method chaining e como ele funciona?
Encadeamento de métodos é uma técnica onde você chama vários métodos um após o outro. Você pode usar encadeamento de métodos em muitos tipos de valores em JavaScript incluindo strings, arrays e objetos. Mesmo que strings sejam valores primitivos, o JavaScript as envolve temporariamente em um objeto
String quando você usa um método de string.
Vamos ver um exemplo usando diferentes métodos de string:
const result = " Hello, World! "
.trim()
.toLowerCase()
.replace("world", "JavaScript");
console.log(result); // "hello, JavaScript!"
Neste exemplo, começamos com uma string e realizamos três operações em sequência: remover espaços em branco, converter para letras minúsculas e substituir a string world por JavaScript. Cada método retorna uma nova string, que se torna o alvo da próxima chamada de método.
O encadeamento de métodos pode melhorar significativamente a legibilidade do código ao trabalhar com operações complexas.
Por exemplo, considere este exemplo usando os métodos filter, map e reduce:
const transactions = [
{ amount: 100, type: "credit" },
{ amount: 20, type: "cash" },
{ amount: 150, type: "credit" },
{ amount: 50, type: "cash" },
{ amount: 75, type: "credit" }
];
const totalCreditWithBonus = transactions
.filter((transaction) => transaction.type === "credit")
.map((transaction) => transaction.amount * 1.1)
.reduce((sum, amount) => sum + amount, 0);
console.log(totalCreditWithBonus); // 357.5
Neste exemplo, temos um array de transações onde cada objeto possui um valor e um tipo cartão de crédito ou dinheiro.
Primeiro filtramos as transações e criamos um novo array apenas com as transações de cartão de crédito. Então, encadeamos o método map ao resultado filtrado e para cada valor da transação, multiplicamos por 1.1 que representa um bônus de 10%.
Então, pegamos esse resultado e encadeamos o método reduce para somar cada um dos valores, o que resulta em 357.5.
Embora o encadeamento de métodos possa tornar o código mais conciso e legível, é importante usá-lo com moderação.
Cadeias muito longas podem se tornar difíceis de depurar, pois não fica imediatamente claro qual etapa da cadeia pode estar causando um problema. Frequentemente é uma boa prática dividir cadeias muito longas em múltiplas etapas para melhor clareza e depuração mais fácil.
Você também pode encadear métodos em um objeto. Nesse caso, cada método retorna this, que se refere ao objeto atual, permitindo que o próximo método na cadeia seja executado nele.
const calculator = {
total: 0,
add(n) {
this.total += n;
return this;
},
multiply(n) {
this.total *= n;
return this;
},
subtract(n) {
this.total -= n;
return this;
},
getResult() {
return this.total;
}
};
const result = calculator.add(5).multiply(2).subtract(3).getResult();
console.log(result); // 7
Dessa forma, cada método retorna o mesmo objeto, para que você possa continuar encadeando chamadas uma após a outra.Este módulo não possui perguntas. Marque como concluído.