Sobes.tech
Junior

Como chamar um método na cadeia de chamadas?

sobes.tech IA

Resposta da IA

Usando um ponto (.) entre chamadas de métodos ou propriedades de um objeto. Cada chamada de método ou acesso à propriedade devolve um objeto, sobre o qual pode então chamar o próximo método ou aceder à próxima propriedade.

// Exemplo de cadeia de chamadas de métodos
" abc ".trim().toUpperCase().split(" ");

/*  
   1. " abc ".trim()  -> "abc"  
   2. "abc".toUpperCase() -> "ABC"  
   3. "ABC".split(" ") -> ["ABC"]  
*/

// Exemplo de cadeia com acesso à propriedade
const user = {
  address: {
    city: "Moscovo"
  }
};

user.address.city; // "Moscovo"

// Exemplo usando encadeamento opcional (?.)
// Permite aceder de forma segura às propriedades de objetos aninhados,
// evitando erros se alguma das propriedades intermédias for null ou undefined.
user.address?.street; // undefined, sem erro

const anotherUser = {};
anotherUser.address?.city; // undefined, sem erro

Ao projetar os seus próprios métodos para suportar encadeamento, cada método deve devolver this (uma referência ao objeto atual), exceto o último método na cadeia, que pode devolver o resultado final.

class Builder {
  constructor() {
    this.value = "";
  }

  addText(text) {
    this.value += text;
    return this; // Devolve this
  }

  addNumber(number) {
    this.value += number;
    return this; // Devolve this
  }

  build() {
    return this.value; // Devolve o resultado final
  }
}

const result = new Builder().addText("Hello").addNumber(123).build();
console.log(result); // "Hello123"