Skip to main content

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."