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
thiscomothisArge 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
thisligado 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.