小编典典

您可以在箭头功能中绑定“ this”吗?

javascript

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

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

但是,看来您无法绑定它们!

这是函数:

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

这是我要将功能绑定到的对象:

var o = {'a': 42};

这就是我绑定的f方式o

var fBound = f.bind(o);

然后我可以打电话给fBound

fBound();

哪个将输出此(o对象):

{'a': 42}

凉!可爱!除非它不起作用。而不是输出o对象,而是输出window对象。

因此,我想知道:您可以绑定箭头功能吗?(如果是这样,如何?)


我已经在Google Chrome 48和Firefox 43中测试了上面的代码,结果是相同的。


阅读 224

收藏
2020-04-25

共1个答案

小编典典

您无法 重新绑定 this箭头功能。它将始终被定义为定义它的上下文。如果您需要this有意义,则应使用常规功能。

根据ECMAScript 2015规范

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

2020-04-25