Так как сохраняется ссылка на функцию sum в переменную sum и после идёт вызов через переменную, то this не указывает на Sum (
https://developer.mozilla.org/ru/docs/Web/JavaScri... На мой взгляд проще всего, в данном случае, привязать метод sum к объекту Sum добавив в конструктор this.sum = this.sum.bind(this); Получится вот так
class Sum {
constructor (){
this.cash = {};
this.sum = this.sum.bind(this);
}
sum(arr, start, end) {
var result = 0,
key = arr.toString() + start + end;
if (key in this.cash) {
return this.cash[key];
}
for (let i = start - 1; i < end; i++) {
result += arr[i];
}
this.cash[key] = result;
return result;
}
}
var sum = new Sum().sum;
sum([1,2,3],1,2);