首页 >web前端 >js教程 >JavaScript 中何时需要绑定'this”?

JavaScript 中何时需要绑定'this”?

Barbara Streisand
Barbara Streisand原创
2024-10-24 12:47:02854浏览

When is Binding

为什么JavaScript需要bind()?

在JavaScript中,“this”的值是由函数的调用方式决定的。如果直接调用函数,则可以控制“this”的值。

但是,当函数作为回调或事件处理程序传递时,外部代码会调用它们,从而导致意外的“this”值。为了确保“this”引用特定对象,您可以使用 .bind 方法。

.bind 允许您在调用函数之前设置“this”的值,从而有效地将其绑定到该对象。

为什么会出现“this”问题?

这个问题是由 JavaScript 的执行环境决定“this”值的方式引起的。当一个函数被定义时,“this”是未定义的。如果函数作为对象的方法调用,“this”将引用该对象。

但是,当函数被独立调用或作为回调调用时,“this”通常引用全局对象(或在严格模式下未定义)。为了确保一致性和正确的行为,通过 .bind 等方法控制“this”的值至关重要。

示例 3 与示例 1/2

示例 3 中,storeMyName3 直接调用getName 函数,返回 myName.name 的值。这个结果被分配给 storeMyName3,它不是一个函数,而是一个值。

相反,在示例 1 和 2 中,storeMyName 和 storeMyName2 是对 getName 函数本身的引用。调用它们时,您执行该函数并获得结果。

示例 2 在调用函数之前使用 .bind(myName) 将“this”的值设置为 myName。这确保了 this.name 引用 myName.name。

因此,示例 3 不会遇到“this”问题,因为它稍后不会调用该函数,而示例 1 和 2 需要 .bind 来将来调用时显式设置“this”值。

以上是JavaScript 中何时需要绑定'this”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn