Cuando esto argumenta: comprender 'esto' en funciones de devolución de llamada
En JavaScript, el valor de esto en una llamada de función está determinado por el contexto en el que se ejecuta la función. Sin embargo, al pasar esto como argumento, las reglas pueden complicarse.
Específicamente, surge el siguiente escenario: cuando se pasa una función de devolución de llamada como argumento, ¿por qué no se establece en la función que llama? ¿la devolución de llamada?
Comprender la jerarquía de 'esto'
Para entender por qué esto está establecido donde está, debemos considerar la jerarquía de la función llamadas:
Sin embargo, antes de que randomFunction llame a la devolución de llamada, usa this.sumData.bind(this) para crear una nueva función (regla n.° 5). Esta nueva función llama a la función de devolución de llamada original, pero ahora con esto vinculado a obj (el argumento pasado para vincular).
Implicaciones para las funciones de devolución de llamada
Al pasar un método como devolución de llamada, es fundamental comprender que no se llamará como obj.method(). Esto significa que esto no tendrá el valor correcto dentro de la función de devolución de llamada. Para solucionar este problema, puede usar bind() para establecer el valor de this dentro de la devolución de llamada.
Otras notas útiles
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3