首页 >web前端 >js教程 >为什么'bind()”不能与箭头函数一起使用?

为什么'bind()”不能与箭头函数一起使用?

DDD
DDD原创
2024-12-09 03:10:17804浏览

Why Doesn't `bind()` Work with Arrow Functions?

在箭头函数中绑定 'this'

ES6 中引入的箭头函数由于其简洁的语法而变得流行。然而,箭头函数的一个限制是它们无法重新绑定“this”。与常规函数不同,箭头函数在定义时从周围上下文继承其“this”绑定。

在提供的示例中,箭头函数:

var f = () => console.log(this);

在全球范围。因此,“this”指的是全局窗口对象,而不是我们尝试将函数绑定到的“o”对象:

var fBound = f.bind(o);
fBound(); // Logs the window object

要解决此问题,请勿使用箭头函数。相反,定义一个普通函数:

var f = function() {
  console.log(this);
}.bind(o);

f(); // Logs the 'o' object

在这种情况下,“this”绑定被正确设置为“o”对象,因为使用了普通函数,允许重新分配绑定。

以上是为什么'bind()”不能与箭头函数一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

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