Поведение setInterval
по умолчанию - это привязка к глобальному контексту. Вы можете вызвать функцию-член, сохранив копию текущего контекста. Внутри retrieve_rate переменная this
будет правильно привязана к исходному контексту. Вот как выглядит ваш код:
var self = this;
this.intervalID = setInterval(
function() { self.retrieve_rate(); },
this.INTERVAL);
Бонусный совет: для простой ссылки на функцию (в отличие от ссылки на объект, которая имеет функцию-член) вы можете изменить контекст с помощью JavaScript call
или apply
.
Кроме того, интересный, если длина массива известна заранее (элементы будут добавлены сразу после создания), использование конструктор Array с указанным длина очень быстрее на недавнем Google Chrome.
" новый Массив ( %ARR_LENGTH % ) " †“100% (быстрее) !
" [] " †“167% (медленнее)
тест может быть найден здесь - https://jsperf.com/small-arr-init-with-known-length-brackets-vs-new-array /
Примечание: этот результат протестирован на Google Chrome v.77 ; в Firefox v.70 оба варианта почти равняются.