Способ отследить изменение свойств экземпляра объекта в Javascript? Здравствуйте, Хабражители!
Есть конструктор:function Someobj(param1, param2) {
this.param1 = param1;
this.param2 = param2;
}
В моем случае параметры param1 и param2 — параметры объекта, которые нужно обновлять вот так:var mySuperObj = new Someobj();
mySuperObj.param1 = 20;
mySuperObj.param2 = 10;
Каким образом можно отследить изменение этих свойств, кроме сверки в интервале и вызовом подобной функции:function updateParam1(obj, newVal) {
obj.param1 = newVal;
}
Если то, что я спросил невозможно, пожалуйста, предложите более удобный вариант их обновления.
Поясню: в моем случае свойства param1 и param2 — координаты x и y экранного псевдообъекта (псевдообъекта на канвасе). А обновлять координаты более привычно способом obj.x = val, нежели функциями.
Есть ли другие способы?
Спасибо.

21 Авг 2019 в 07:10
186 +1
0
Ответы
1

Для отслеживания изменений свойств объекта в JavaScript можно использовать геттеры и сеттеры (getters/setters).

В вашем случае, вы можете определить геттеры и сеттеры для свойств param1 и param2 в конструкторе Someobj, чтобы отслеживать изменения в них. Например:

function Someobj(param1, param2) {
let _param1 = param1;
let _param2 = param2;
Object.defineProperty(this, 'param1', {
get: function() {
return _param1;
},
set: function(newVal) {
console.log('param1 was updated:', newVal);
_param1 = newVal;
}
});
Object.defineProperty(this, 'param2', {
get: function() {
return _param2;
},
set: function(newVal) {
console.log('param2 was updated:', newVal);
_param2 = newVal;
}
});
}
var mySuperObj = new Someobj(10, 20);
mySuperObj.param1 = 30; // вывод: "param1 was updated: 30"
mySuperObj.param2 = 40; // вывод: "param2 was updated: 40"

Таким образом, при изменении свойств param1 и param2 будет вызываться соответствующий сеттер, который может выполнять дополнительные действия или отслеживать изменения.

Надеюсь, это поможет вам отслеживать изменения свойств объекта в вашем коде. Если у вас есть какие-либо другие вопросы, не стесняйтесь спрашивать.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир