reader.onload = function (upload) {
Поскольку это нормальная функция, ее значение this
определяется тем, как ее вызывали.Я предполагаю, что FileReader вызывает его с this
, равным глобальному объекту (в строгом режиме) или неопределенным (в строгом режиме).Хотя, поскольку я не уверен, как реализован этот код FileReader, он может иметь this
, равный чему-то другому, например, самому читателю файлов.В любом случае, позже, когда вы вызываете this.next
, this
не равно тому, что вы думаете.
Если вы измените это на функцию стрелки, она получит значение this
изгде это определено.
reader.onload = (upload) => {
Обратите внимание, что этого может быть недостаточно, поскольку это также зависит от того, какой код окружает приведенный вами пример.Вам может понадобиться превратить другие функции в функции стрелок и / или использовать function.prototype.bind