При выполнении этой строки:
this.days.push(this.day)
Вы продолжаете нажимать один и тот же объект Date каждый раз . Вы никогда не переназначаете this.day
, вы изменяете его только с setDate
, и каждый раз, когда вы делаете это, все ссылки в этом массиве обновляются.
Но когда вы запустите эту строку:
this.dates.push(this.day.toDateString())
Вы фиксируете состояние в момент нажатия, строки неизменны.
Для более простого примера того, что вы получаете, посмотрите на это
const foo = {bar: 3};
const arr = [foo, foo, foo]; // all the same foo
arr.map(x => x.bar); // 3, 3, 3
foo.bar = 5;
arr.map(x => x.bar); // 5, 5, 5