Способ отследить изменение свойств экземпляра объекта в 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, нежели функциями Есть ли другие способы Спасибо.
Для отслеживания изменений свойств объекта в 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
var mySuperObj = new Someobj(10, 20) mySuperObj.param1 = 30; // вывод: "param1 was updated: 30 mySuperObj.param2 = 40; // вывод: "param2 was updated: 40"
Таким образом, при изменении свойств param1 и param2 будет вызываться соответствующий сеттер, который может выполнять дополнительные действия или отслеживать изменения.
Надеюсь, это поможет вам отслеживать изменения свойств объекта в вашем коде. Если у вас есть какие-либо другие вопросы, не стесняйтесь спрашивать.
Для отслеживания изменений свойств объекта в 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 будет вызываться соответствующий сеттер, который может выполнять дополнительные действия или отслеживать изменения.
Надеюсь, это поможет вам отслеживать изменения свойств объекта в вашем коде. Если у вас есть какие-либо другие вопросы, не стесняйтесь спрашивать.