我已经用 ES6 试验了一段时间,但我遇到了一个小问题。
我真的很喜欢使用箭头函数,只要有可能,我就会使用它们。
但是,您似乎无法绑定它们!
这是功能:
var f = () => console.log(this);
这是我要将函数绑定到的对象:
var o = {'a': 42};
这是我将如何绑定f到o:
f
o
var fBound = f.bind(o);
然后我可以打电话fBound:
fBound
fBound();
这将输出这个(o对象):
{'a': 42}
凉爽的!迷人的!除了它不起作用。它不是输出o对象,而是输出window对象。
window
所以我想知道:你能绑定箭头函数吗?(如果是这样,怎么做?)
我在 Google Chrome 48 和 Firefox 43 中测试了上面的代码,结果是一样的。
您不能在箭头函数中 重新绑定。 this它将始终被定义为定义它的上下文。如果您需要this有意义,则应使用正常功能。
this
来自ECMAScript 2015 规范:
对 ArrowFunction 中的参数、super、this 或 new.target 的任何引用都必须解析为词法封闭环境中的绑定。通常,这将是直接封闭函数的函数环境。