Articles

Javascript: call(), aplicar() e bind()

call(), aplicar() e bind() — uma nova esperança

até agora temos tratado funções como objetos que são compostos por um nome (opcional, pode ser também uma função anônima) e o código é executado quando é chamado. Mas essa não é toda a verdade. Como uma pessoa que ama a verdade, devo dizer – lhe que uma função realmente olha mais perto da seguinte imagem:

o Que é isso??????? Não te preocupes! Passarei agora por estes três métodos semelhantes que aparecem em cada função com exemplos. Rejubilem!

bind()

O oficial docs dizer: bind() método cria uma nova função que, quando chamado, tem a sua this palavra-chave definida para o valor fornecido. (Na verdade, fala sobre ainda mais coisas, mas vamos deixar isso para outra hora 🙂

isto é extremamente poderoso. Vamos definir explicitamente o valor de this ao chamar uma função. Vejamos cooooode:

Usando a tag bind() method on line 14.

Vamos quebrá-lo para baixo. Quando usamos o bind() método:

  1. JS motor é a criação de um novo pokemonName instância e vinculação pokemon sua this variável. É importante entender que copia a função pokemonName.
  2. Depois de criar uma cópia da função pokemonName é capaz de chamar logPokemon(), embora não estivesse no objeto pokemon inicialmente. Ela agora reconhece suas propriedades (Pika e Chu) e seus métodos.

E a coisa legal é, depois que nós ligamos () um valor que podemos usar a função assim como era qualquer outra função normal. Poderíamos até atualizar a função para aceitar parâmetros, e passá-los assim:

call(), aplicar()

O oficial de documentos para call() dizer: call() chamadas de método, uma função com um determinado this valor e argumentos fornecidos individualmente.

O que isso significa, é que podemos chamar qualquer função, e explicitamente especificar o que this deve referenciar dentro da função chamada. Realmente semelhante ao método bind()! Isso definitivamente pode nos salvar de escrever o código hacky (mesmo que todos nós ainda somos hackerzzz).

As principais diferenças entre bind() e call() é que o call() método:

  1. Aceita parâmetros adicionais
  2. Executa a função a que foi convocado imediatamente.
  3. o método call() não faz uma cópia da função que está sendo chamada.

call()eapply() servem exactamente para o mesmo fim. A única diferença entre como eles funcionam é que a chamada() espera que todos os parâmetros sejam passados individualmente, enquanto a aplicação() espera uma matriz de todos os nossos parâmetros. Exemplo:

Observe que aplicar aceita e matriz, e chamada em espera cada param individualmente.

estes métodos construídos, que existem em todas as funções JS podem ser muito úteis. Mesmo se você não acabar usando-os em seu dia-a-dia programação, você ainda vai encontrá-lo muitas vezes ao ler o código de outros povos.se tiver alguma dúvida, como sempre, contacte via Instagram ❤