Quando this argumenta: entendendo 'this' em funções de retorno de chamada
Em JavaScript, o valor this em uma chamada de função é determinado pelo contexto em que a função é executada. Ao passar isso como um argumento, no entanto, as regras podem ficar complicadas.
Especificamente, surge o seguinte cenário: quando uma função de retorno de chamada é passada como argumento, por que isso não é definido para a função que chama o retorno de chamada?
Compreendendo a hierarquia de 'this'
Para entender por que this está definido onde está, precisamos considerar a hierarquia de chamadas de função:
No entanto, antes de randomFunction chamar o retorno de chamada, ele usa this.sumData.bind(this) para criar uma nova função (regra #5). Esta nova função chama a função de retorno de chamada original, mas agora com esta vinculada a obj (o argumento passado para vincular).
Implicações para funções de retorno de chamada
Ao passar um método como retorno de chamada, é crucial entender que não será chamado como obj.method(). Isso significa que não terá o valor correto dentro da função de retorno de chamada. Para contornar esse problema, você pode usar bind() para definir o valor this no retorno de chamada.
Outras notas úteis
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