小编典典

你能在箭头函数中绑定'this'吗?

all

我已经用 ES6 试验了一段时间,但我遇到了一个小问题。

我真的很喜欢使用箭头函数,只要有可能,我就会使用它们。

但是,您似乎无法绑定它们!

这是功能:

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

这是我要将函数绑定到的对象:

var o = {'a': 42};

这是我将如何绑定fo

var fBound = f.bind(o);

然后我可以打电话fBound

fBound();

这将输出这个(o对象):

{'a': 42}

凉爽的!迷人的!除了它不起作用。它不是输出o对象,而是输出window对象。

所以我想知道:你能绑定箭头函数吗?(如果是这样,怎么做?)


我在 Google Chrome 48 和 Firefox 43 中测试了上面的代码,结果是一样的。


阅读 155

收藏
2022-08-17

共1个答案

小编典典

您不能在箭头函数中 重新绑定。 this它将始终被定义为定义它的上下文。如果您需要this有意义,则应使用正常功能。

来自ECMAScript 2015 规范

对 ArrowFunction 中的参数、super、this 或 new.target
的任何引用都必须解析为词法封闭环境中的绑定。通常,这将是直接封闭函数的函数环境。

2022-08-17