【发布时间】:2015-11-28 12:45:47
【问题描述】:
我只是想将我的一些代码更改为 ES6,但我遇到了一些箭头函数不起作用的代码,我不确定我是否理解原因。代码来自Hapi的一个插件,用于装饰reply接口。
ES5:
server.decorate('reply', 'test', function(schema, response) {
return this.response(mask(schema, response));
});
ES6:
server.decorate('reply', 'test', (schema, response) => {
return this.response(mask(schema, response));
});
E66不工作,报错:
Uncaught error: this.response is not a function
这是为什么?
【问题讨论】:
-
ES6 中的箭头函数自动将
this绑定到外部作用域,因此在这种情况下它不等效。 -
我明白了——答案是什么?将其保留为
function? -
是的。如果该特定功能的
this绑定到其他东西,您无能为力。 -
好的。发表一个答案,我会标记它。谢谢
-
this行为的区别在于相关 MDN 页面的第一段。顺便说一句,正确的术语是“箭头函数”(不是“双箭头函数”)。