JavaScript é uma linguagem de programação versátil e poderosa que forma a espinha dorsal do desenvolvimento web moderno. À medida que os desenvolvedores progridem em sua jornada JavaScript, eles encontram conceitos mais avançados que podem aprimorar significativamente suas habilidades de codificação. Entre esses conceitos estão os métodos call, apply e bind. Esses métodos são ferramentas essenciais para manipular o contexto de execução de funções e gerenciar a palavra-chave this. Neste artigo, exploraremos esses métodos em profundidade, entenderemos suas diferenças e aprenderemos como usá-los de maneira eficaz em seus projetos JavaScript.
Antes de mergulhar em chamar, aplicar e vincular, é crucial entender o conceito da palavra-chave this em JavaScript
isto se refere ao objeto que está executando a função atual. O valor disso depende de como a função é chamada:
No entanto, há momentos em que você precisa definir manualmente o valor disso. É aí que entram em jogo chamar, aplicar e vincular.
O método call é usado para invocar uma função com um valor this específico e argumentos fornecidos individualmente. Isto é particularmente útil quando você deseja pegar emprestado um método de outro objeto ou definir o contexto dinamicamente. Sua sintaxe é a seguinte:
function.call(thisArg, arg1, arg2, ...)
Aqui está um exemplo para ilustrar como call() funciona:
const person = { fullName: function(city, country) { console.log(this.firstName " " this.lastName " lives in " city ", " country); } }; const john = { firstName: "John", lastName: "Doe" }; person.fullName.call(john, "New York", "USA"); // Output: John Doe lives in New York, USA
Neste exemplo, usamos call() para invocar a função fullName com john como o valor this, efetivamente pegando emprestado o método do objeto person.
O método apply() é semelhante a call(), mas aceita argumentos como um array. Sua sintaxe é:
function.apply(thisArg, [argsArray])
Vamos dar um exemplo.
const person = { fullName: function(city, country) { console.log(this.firstName " " this.lastName " lives in " city ", " country); } }; const john = { firstName: "John", lastName: "Doe" }; person.fullName.apply(john, ["New York", "USA"]); // Output: John Doe lives in New York, USA
A principal diferença entre call() e apply() é como eles lidam com argumentos. call() espera que os argumentos sejam passados individualmente, enquanto apply() os espera em um array.
Ao contrário de call() e apply(), que invocam imediatamente a função, bind() cria uma nova função com um valor this fixo. Isto é particularmente útil para criar funções que podem ser chamadas posteriormente com um contexto específico. Sua sintaxe é:
const boundFunction = function.bind(thisArg, arg1, arg2, ...)
Aqui está um exemplo de como bind() funciona:
const person = { firstName: "John", lastName: "Doe", fullName: function() { return this.firstName " " this.lastName; } }; const logName = function() { console.log(this.fullName()); }; const boundLogName = logName.bind(person); boundLogName(); // Output: John Doe
Neste exemplo, criamos uma nova funçãoboundLogName que tem person permanentemente vinculado como seu valor this.
Embora chamar, aplicar e vincular sejam ferramentas poderosas, é importante considerar suas implicações no desempenho. bind() é geralmente mais lento que call() ou apply() porque cria uma nova função. Se você estiver trabalhando em seções críticas de desempenho do seu código, talvez você queira usar call() ou apply() em vez de bind().
Ao usar call, apply e bind, lembre-se destas práticas recomendadas:
Uma armadilha comum é esquecer que bind() retorna uma nova função. Certifique-se de reatribuir a função vinculada ou usá-la diretamente
Dominar chamar, aplicar e vincular é um passo significativo para se tornar um desenvolvedor JavaScript proficiente. Esses métodos fornecem maneiras poderosas de controlar o contexto de execução da função e gerenciar a palavra-chave this. Ao compreender e usar essas ferramentas de maneira eficaz, você pode escrever códigos mais flexíveis, reutilizáveis e de fácil manutenção.
À medida que você continua a explorar o JavaScript, lembre-se de que esses conceitos são apenas a ponta do iceberg. A linguagem está em constante evolução e é crucial manter-se atualizado com os recursos e práticas recomendadas mais recentes. Pratique o uso de call, apply e bind em seus projetos e logo você se verá escrevendo um código JavaScript mais elegante e eficiente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3