call, apply e bind

Vinicius Azevedo
Aug 8, 2017 · 2 min read

[ powerful features in javascript ]

Se você leu os artigos anteriores, aprendeu que, em JavaScript, tudo é um objeto. Ou seja, podemos acessar e definir propriedades adicionais para funções. A pergunta é, como?

Mas antes, você deve conhecer e dominar uma propriedade chamada this.

O que é?

Um estado interno de um determinado contexto. Em outras palavras: um coringa!

Onde é usada?

Dentro de uma função.

O que ela faz?

Faz referencia ao contexto do objeto que é invocado.

Apesar de, extremamente poderoso, é considerado uma má pratica usá-lo.

Dito isso, irei mostrar outra solução para manipulá-lo com: call, apply e bind.

O que são ?

Métodos de funções.

O que fazem?

Alteram o valor de this.

Call

O método call() invoca uma função com um dado valor this e argumentos passados individualmente.

fun.call(thisArg[, arg1[, arg2[, ...]]])

O primeiro parâmetro que recebe é o valor de this que que será atribuído à função. Os demais parâmetros são os parâmetros da função que invoca o método Call.

Apply

O método apply() chama uma função com um dado valor this e argumentos providos como uma array (ou um objeto parecido com um array).

fun.apply(thisArg, [argsArray])

Ele funciona exatamente como o método Call, porém, seu segundo parâmetro recebe um array de parâmetros.

Bind

Ao contrário dos outros, o método bind() não executa uma função, mas retorna uma outra com um novo contexto. O primeiro argumento recebe o valor do this a ser usado na função, e os demais argumentos são os parâmetros que terão valores atribuídos dentro da mesma.

fun.bind(thisArg[, arg1[, arg2[, ...]]])

Ele também tem a capacidade de alterar a quantidade de argumentos de uma função -ou seja, Currying.

Para mais detalhes eu recomendo o vídeo e link abaixo: