Array.prototype.valueOf = function() {
return this.reduce((a, x) => a + x, 0);
};
должен занестись в переменную (на самом деле, во Store во vuex)
если где-то выше происходит полная перерисовка, т.е. какой-то родитель полностью убирается на некоторое время(например через if), а потом появляется снова.
А вызван он будет через точку: arr.valueOf(). В твоем коде нет этого вызова, это js добавляет "от себя". Потому в this подставляется arr, то есть то, что стоит перед точкой.
Поскольку valueOf нет в самом arr, он будет найден в прототипе, но в this всё равно пойдет arr, так мир устроен.
читай главы учебника про объекты, прототипы и т.д.