"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o operador “this” é inconsistente em JavaScript e como resolver isso?

Por que o operador “this” é inconsistente em JavaScript e como resolver isso?

Publicado em 2024-11-08
Navegar:604

Why is the \

Em Javascript, por que o operador "este" é inconsistente?

Em JavaScript, o operador "este" exibe um comportamento variado dependendo do contexto de invocação. Isso pode levar a confusão e resultados inesperados, especialmente ao trabalhar com retornos de chamada e objetos.

Padrões de invocação e ligação "this"

O operador "this" está vinculado a o objeto ou classe durante a invocação da função, e essa ligação é determinada pelo padrão de invocação:

  • Method: Quando invocado como um método de um objeto, "this" refere-se ao objeto em si.
  • Função: Quando chamado como uma função autônoma, "this" faz referência ao escopo global (objeto de janela em navegadores).
  • Construtor: Quando invocado com a palavra-chave "new", um novo objeto é criado e "this" aponta para esse objeto.
  • Apply: O método "apply" permite a configuração explícita de "this" e passagem de argumentos em uma matriz.

O enigma do retorno de chamada

O problema surge quando o retorno de chamada de um método é invocado como uma função. Como os retornos de chamada não são invocados como métodos, "this" refere-se ao escopo global em vez do objeto ao qual foi originalmente planejado.

Práticas recomendadas

Uma estratégia para manter consistência na ligação "this" nos retornos de chamada é usar "var that = this;" padrão. Isso atribui uma referência a "isto" (o objeto) a uma nova variável (aquilo), que pode então ser usada no retorno de chamada.

Outra abordagem recomendada é adotar o aspecto de programação funcional do JavaScript e evitar depender de classes e padrões de herança. Ao usar funções puras e funções de ordem superior, você pode separar a lógica dos estados dos objetos e obter um código mais modular e previsível.

Além disso, considere usar uma estrutura JavaScript que forneça mecanismos para lidar com "esta" ligação e objeto- programação orientada de maneira consistente. Lembre-se de revisar cuidadosamente a documentação e as peculiaridades da estrutura para evitar comportamentos inesperados.

Declaração de lançamento Este artigo foi reimpresso em: 1729561575 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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