在JavaScript中,“this”的值是由函数的调用方式决定的。如果直接调用函数,则可以控制“this”的值。
但是,当函数作为回调或事件处理程序传递时,外部代码会调用它们,从而导致意外的“this”值。为了确保“this”引用特定对象,您可以使用 .bind 方法。
.bind 允许您在调用函数之前设置“this”的值,从而有效地将其绑定到该对象。
这个问题是由 JavaScript 的执行环境决定“this”值的方式引起的。当一个函数被定义时,“this”是未定义的。如果函数作为对象的方法调用,“this”将引用该对象。
但是,当函数被独立调用或作为回调调用时,“this”通常引用全局对象(或在严格模式下未定义)。为了确保一致性和正确的行为,通过 .bind 等方法控制“this”的值至关重要。
示例 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中文网其他相关文章!