首页 >web前端 >js教程 >如何在 ES6 箭头函数中保留 `this` 与 jQuery 的 `$(this)` 的绑定?

如何在 ES6 箭头函数中保留 `this` 与 jQuery 的 `$(this)` 的绑定?

Barbara Streisand
Barbara Streisand原创
2024-12-11 20:47:12304浏览

How Can I Preserve `this` Binding with jQuery's `$(this)` Inside ES6 Arrow Functions?

在 ES6 箭头函数中使用 jQuery $(this) 保留词法 This 绑定

使用 jQuery 单击绑定时,开发人员可能会遇到问题当尝试将 ES6 箭头函数与词法 this 绑定一起使用时。这是因为 ES6 中的箭头函数按词法绑定 this,这可能会在使用 jQuery 时导致意外行为,因为 jQuery 需要具有不同 this 值的闭包。

在提供的示例中:

this._pads.on('click', () => {
  if (this.go) { $(this).addClass('active'); }
});

箭头函数在词法上绑定 this,导致 $(this) 引用 Game 对象而不是单击的元素。要解决此问题,需要使用 event.currentTarget 而不是 $(this):

this._pads.on('click', (event) => {
  if (this.go) { $(event.currentTarget).addClass('active'); }
});

这可以确保 $(this) 正确引用被单击的元素,因为 jQuery 明确提供了 event.currentTarget 来处理 this 值可能不一致的情况。

理解词法绑定ES6

ES6 箭头函数具有词法 this 绑定,这意味着它们继承了周围上下文的 this 值。这既是有利的,也是具有挑战性的,因为它可以防止意外的绑定问题,但在使用回调时也需要仔细考虑。

结论

当使用 ES6 箭头函数时jQuery 单击绑定,重要的是要注意词法上的 this 绑定,并考虑使用 event.currentTarget 显式访问单击的元素。这可以确保正确的功能并防止由于改变此值而导致意外行为。

以上是如何在 ES6 箭头函数中保留 `this` 与 jQuery 的 `$(this)` 的绑定?的详细内容。更多信息请关注PHP中文网其他相关文章!

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