Sobes.tech
Junior

Como funciona o método apply em JavaScript?

sobes.tech IA

Resposta da IA

O método apply é chamado em funções e permite invocar essa função com um valor this definido e argumentos passados na forma de um array (ou de um objeto semelhante a um array).

Aspectos principais:

  1. Definição de this: O primeiro argumento do método apply determina o valor da palavra-chave this dentro da função chamada. Se passar null ou undefined, em modo não estrito, this referenciará o objeto global (por exemplo, window no navegador ou global no Node.js), e em modo estrito, permanecerá como undefined.
  2. Passagem de argumentos: O segundo argumento é um array (ou um objeto semelhante a um array), cujos elementos serão os argumentos da função chamada, na ordem em que aparecem no array.

Sintaxe:

function.apply(thisArg, argsArray)
  • thisArg: Valor que será usado como this ao chamar a função.
  • argsArray: Array ou objeto semelhante a um array contendo os argumentos com os quais a função será chamada.

Diferenças com call:

  • apply aceita os argumentos como um array.
  • call aceita os argumentos como valores separados, listados após thisArg.

Exemplo de uso:

// Função para calcular o número máximo em um array
const numbers = [1, 5, 2, 8, 3];
const max = Math.max.apply(null, numbers);
console.log(max); // 8

// Chamada de método de um objeto com outro contexto `this`
const person1 = { name: 'Alice' };
const person2 = { name: 'Bob' };

function greet(greeting, punctuation) {
  console.log(`${greeting}, ${this.name}${punctuation}`);
}

greet.apply(person1, ['Hello', '!']); // Hello, Alice!
 gree.apply(person2, ['Hi', '?']);    // Hi, Bob?

Usos:

  • Passar argumentos de um array para uma função que espera argumentos separados.
  • Alterar o contexto this ao chamar uma função.
  • Usar com métodos embutidos que esperam múltiplos argumentos (por exemplo, Math.max, Math.min).