Call | Apply | Bind
- Call | Apply | Bind
Call e Apply
Os métodos call() e apply() são utilizados para invocar imediatamente uma função, permitindo especificar explicitamente o contexto (this) no qual ela será executada. A diferença crucial entre eles está na forma como os argumentos são passados para a função:
O método call() recebe os argumentos individualmente, separados por vírgula. E o método apply() recebe os argumentos como um array.
const saudacao = nome =>
console.log(Olá, ${nome}! Eu sou ${this.titulo})
const pessoa = {
titulo: 'Dr.'
}
saudacao.call(pessoa, 'João') // Saída: "Olá, João! Eu sou Dr."
const args = ['Maria']
saudacao.apply(pessoa, args) // Saída: "Olá, Maria! Eu sou Dr."
Bind
Por outro lado, o método bind() difere ao criar uma nova função com um contexto (this) específico, sem executá-la imediatamente. Em vez disso, ele retorna uma nova função com o contexto vinculado, permitindo sua invocação posterior.
const saudacao = nome =>
console.log(Olá, ${nome}! Eu sou ${this.titulo})
const pessoa = {
titulo: 'Dr.'
}
const saudacaoParaMaria = saudacao.bind(pessoa, 'Maria')
saudacaoParaMaria() // Saída: "Olá, Maria! Eu sou Dr."