Sobes.tech
Junior — Middle

Poderia explicar as diferenças entre os métodos call, apply e bind em JavaScript e como eles são usados para controlar o contexto de chamada de uma função?

sobes.tech IA

Resposta da IA

No JavaScript, os métodos call, apply e bind são usados para gerir o contexto (this) ao chamar uma função:

  • call(thisArg, arg1, arg2, ...) — chama a função imediatamente, definindo this como thisArg e passando os argumentos individualmente.

  • apply(thisArg, [argsArray]) — semelhante ao call, mas os argumentos são passados como um array.

  • bind(thisArg, arg1, arg2, ...) — não chama a função imediatamente, mas retorna uma nova função com o contexto this ligado e, opcionalmente, argumentos predefinidos.

Exemplo:

function greet(greeting, punctuation) {
  console.log(greeting + ', ' + this.name + punctuation);
}

const person = { name: 'Иван' };

greet.call(person, 'Привет', '!'); // Привет, Иван!

greet.apply(person, ['Здравствуйте', '...']); // Здравствуйте, Иван...

const greetIvan = greet.bind(person, 'Привет');
greetIvan('!!!'); // Привет, Иван!!!

Assim, estes métodos permitem especificar explicitamente a qual objeto this se refere dentro da função.