Sobes.tech
Middle

O que são os métodos call, apply e bind em JavaScript?

sobes.tech IA

Resposta da IA

call, apply e bind são métodos disponíveis para todas as funções em JavaScript. São usados para gerir o contexto de execução da função (o valor de this).

  • call: Chama a função com um valor this especificado e argumentos separados.
    // Exemplo de uso de call
    function greet() {
      return "Olá, " + this.name + "!";
    }
    
    const person = { name: "Ivan" };
    
    console.log(greet.call(person)); // Resultado: Olá, Ivan!
    
  • apply: Chama a função com um valor this especificado e argumentos passados em forma de array ou pseudoarray.
    // Exemplo de uso de apply
    function sum(a, b) {
      return this.base + a + b;
    }
    
    const context = { base: 10 };
    const numbers = [5, 3];
    
    console.log(sum.apply(context, numbers)); // Resultado: 18
    
  • bind: Cria uma nova função que, ao ser chamada, tem um valor this fixado. A função original não é chamada imediatamente.
    // Exemplo de uso de bind
    const module = {
      x: 42,
      getX: function() {
        return this.x;
      }
    };
    
    const unboundGetX = module.getX;
    console.log(unboundGetX()); // Resultado: undefined (this aponta para o objeto global)
    
    const boundGetX = unboundGetX.bind(module);
    console.log(boundGetX()); // Resultado: 42 (this está ligado a module)
    

Principais diferenças:

Método Passagem de argumentos Chamada da função Valor de retorno
call Separados (por vírgula) Imediatamente Resultado da função
apply Em forma de array ou pseudoarray Imediatamente Resultado da função
bind Separados (por vírgula) Não imediatamente Nova função com this ligado