Не пойму, почему не работает метод установки
let p = {
x: 2,
y: 3,
get r() {
return Math.hypot(this.x, this.y);
},
set r(newValue) {
oldValue = Math.hypot(this.x, this.y);
let ratio = newValue / oldValue;
this.x *= ratio;
this.y *= ratio;
},
};
p.r = 10;
console.log(p.r);
Почему то когда я задаю значение параметру метода установки, то последующие его операции не выполняются, а просто выводится значение которое я задал. Или я может просто не так задаю значение параметру или не так вызываю метод установки. Помогите пожалуйста, буду очень благодарен
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
Все работает верно. В этом можно убедиться выведя объект полностью.
Так как r - это вычисляемое свойство, при его установке изменяются внутренние поля. Значения их вычисляются так, чтобы при получении r результат было тем, что передается в сеттер.
let p = {
x: 2,
y: 3,
get r() {
return Math.hypot(this.x, this.y);
},
set r(newValue) {
oldValue = Math.hypot(this.x, this.y);
let ratio = newValue / oldValue;
this.x *= ratio;
this.y *= ratio;
},
};
console.log(p);
p.r = 10;
console.log(p);