理解 JavaScript 回调函数中的“this”
在 JavaScript 中,函数中“this”的值取决于函数如何确定被调用。当一个函数作为参数传递给另一个函数时,可以使用各种方法控制回调函数中“this”的值。
默认行为
通常,在回调函数中,'this'默认设置为全局对象或未定义(严格模式下)。这是因为从技术上讲,回调函数并不是作为特定对象的方法来调用的。
使用 .bind() 设置 'this'
但是,.bind () 方法可用于在调用回调函数时将特定值绑定到“this”。 .bind() 方法创建一个新函数,该函数始终将“this”设置为作为参数传递给 .bind() 的值。
示例:使用 .bind()
在您的示例中:
randomFunction(this.sumData.bind(this))
.bind() 方法用于创建一个将 'this' 绑定到 obj 对象的新函数。因此,当 randomFunction 调用回调函数 (this.sumData) 时,'this' 将被设置为 obj,这正是您所期望的。
与直接方法调用的比较
相反,在 randomFunction 中使用直接方法调用 this.sumData() 会将 'this' 设置为全局对象或未定义,因为该函数将作为常规函数调用,而不是作为 obj 对象的方法调用。
ES6 中的箭头函数
在 ES6 中,箭头函数对于“this”有不同的行为。它们在定义它们的环境中维护“this”的词汇值。这意味着无论如何调用箭头函数,“this”始终引用同一个对象。这在某些情况下可能会有所帮助,但了解这种行为很重要。
结论
最终,回调函数中“this”的值是由函数的调用方式决定。通过了解控制“this”的不同方式,您可以在 JavaScript 回调中有效地传递和操作数据。
以上是JavaScript 回调函数中的“this”如何表现?的详细内容。更多信息请关注PHP中文网其他相关文章!