你能绑定箭头函数吗?

你能绑定箭头函数吗?

我已经用ES6做了一段时间的实验,我只是遇到了一个小问题。

我非常喜欢使用箭头函数,只要有可能,我就使用它们。

然而,似乎你不能绑定他们!

以下是功能:

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

下面是我希望将函数绑定到的对象:

var o = {'a': 42};

以下是我将如何绑定fo:

var fBound = f.bind(o);

然后我就可以打电话fBound:

fBound();

,它将输出以下内容(o目标):

{'a': 42}

凉爽的!可爱的!只是它不起作用。而不是输出o对象时,它将输出window对象。

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


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


MYYA
浏览 500回答 3
3回答

慕尼黑8549860

不能“重新绑定”箭头函数。它将始终与定义它的上下文一起调用。用一个正常的函数。从ECMAScript 2015规格:在ArrowFunction中对参数、Super、this或new.Target的任何引用都必须解析到词汇包围环境中的绑定。通常,这将是立即包围函数的函数环境。

aluckdog

从MDN:与函数表达式相比,箭头函数表达式的语法更短,并且在词汇上绑定此值(不绑定它自己的this、参数、Super.Target或new.Target)。箭头函数总是匿名的。这意味着您不能按需要将值绑定到它。
打开App,查看更多内容
随时随地看视频慕课网APP