Я просто обойдусь с изменением своего кода на ES6, и я натолкнулся на какой-то код, где функция стрелки не работала, и я не уверен, что понимаю почему. Код из плагина для Hapi, чтобы украсить интерфейс reply
.ES6 стрелка/эквивалент функции
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' с внешним пространством, поэтому в этом случае он не эквивалентен. – Seiyria
Я вижу - какая рана была ответом? просто оставьте это как 'function'? – cyberwombat
Да. Вы не можете много сделать, если 'this' для этой конкретной функции привязан к чему-то другому. – Seiyria