Это потому, что
[...points, {x: 20, y:20}];
создал новый массив.
let {points} = this;
изначально указывает на массив точек, принадлежащий экземпляру класса, но
points = [...points, {x: 20, y:20}];
изменяет ссылку.
Вы можете использовать .push
, чтобы сохранить ссылку как:
points.push({x: 20, y:20});
РЕДАКТИРОВАТЬ, чтобы объяснить более многословно:
[...points, {x: 20, y:20}]
создает новый массив, поэтому назначение нового массива точкам не приводит к изменению данных переменной points
(думаю указатель) указывает , а скорее изменяет сам указатель на новую памятьместо.