Emptyform
@Emptyform

Почему данный пример не работает (подмена функции)?

Привет, алл!

Код:
var emit = server.emit;

/* Вариант 1 - работает */
server.emit = function(event) {
    console.log('блабла');
    return emit.apply(server, arguments);
};

/* Вариант 2 - НЕ работает */
server.emit = event => {
    console.log('блабла'); // <-- это работает
    return emit.apply(server, arguments); // <-- здесь не работает
};

Вариант 2 не работает - клиент не получает ответа, отваливается по таймауту.
Почему вариант 2 не работает?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
@YNile
JS Developer
Дело не this
arguments внутри стрелочных функций берется из внешней функции. Соотв у вас возможно arguments будет неизвестный.

server.emit = (...args) => {
    return emit.apply(server, args);
};


Вот так должно работать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы