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.