我已经在尝试使用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的任何引用都必须解析为词法包围环境中的绑定。通常,这将是立即封闭函数的函数环境。