当 this 争论时:理解回调函数中的 'this'
在 JavaScript 中,函数调用中 this 的值由执行该函数的上下文。然而,当将 this 作为参数传递时,规则可能会变得复杂。
具体来说,会出现以下情况:当回调函数作为参数传递时,为什么不将 this 设置为调用的函数回调?
理解 'this' 的层次结构
要理解为什么 this 被设置在它所在的位置,我们需要考虑函数调用的层次结构:
但是,在 randomFunction 调用回调之前,它使用 this.sumData.bind(this) 创建一个新函数(规则#5)。这个新函数调用原始回调函数,但现在将 this 绑定到 obj(传递给 bind 的参数)。
回调函数的含义
传递方法时作为回调,了解它不会被称为 obj.method() 至关重要。这意味着 this 在回调函数中不会有正确的值。要解决此问题,您可以使用 bind() 在回调中设置 this 的值。
其他有用注释
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3