Используя NodeJS, я пытаюсь отслеживать изменения атрибутов Model независимо от того, какой тип они могут быть. С помощью Object.defineProperty
сеттеры обычно работают отлично, но для объектов и массивов, если свойство объекта установлено, я не могу отслеживать сделанные изменения.Object defineProperty setter для свойств
Я понимаю, что сеттер не является самим объектом, но есть ли способ заставить его функционировать так, как будто это так?
Например, могу ли я получить приведенный ниже код для запуска сеттера, когда установлено свойство «setter»?
var model = {};
model.attributes = {};
Object.defineProperty(model, 'options', {
get: function() {
return this.attributes.options;
},
set: function(value) {
console.log('changed options from:', this.attributes.options, 'to', value);
this.attributes.options = value;
}
});
model.options = {};
model.options = { a: 50 }; // triggers setter
model.options.b = 60; // doesn't trigger setter, how can I get it to do so?
короче: нет, вы можете» t подписывать неизвестные свойства, включая под-свойства с ODP. загляните в объект Object.observe() - тип – dandavis
@ dandavis Ah, bummer. Похоже, что Node поддерживает только Object.observe в последних версиях (т.е. нестабильных), поэтому я могу просто изучить некоторые другие подходы. Спасибо за помощь! –
Прокси-сервер Harmony может помочь вам – Vinz243