Я довольно новичок в getters и seters и ищу способ прослушивания изменений в объекте для немедленного хранения данных без вызова функции Save()
значение изменяется. Это, как я сделать это прямо сейчас:Использование getter и setter для свойства объекта, имеющего собственные свойства
var myObject = {
Data: {
enabled: true,
show: false
},
Save: function() {
//store myObject.Data to local storage
},
Load: function() {
//load data from local storage and assign it to myObject.Data
},
doSomething: function() {
myObject.Load();
if (myObject.Data.enabled) {
myObject.Data.show = true;
myObject.Save();
}
}
Теперь я хотел бы, чтобы оптимизировать этот код, чтобы каждый раз, когда свойство в myObject.Data
изменяется, myObject.Save()
выполняется. Проблема, с которой я сталкиваюсь, заключается в том, что, возможно, только можно определить getter для свойства, имеющего только одно значение, но не для свойства, которое является самим объектом.
var myObj = {
_Data: {
a: 0,
b: 1,
c: 3
},
set Data (a) {
console.log(a);
}
};
myObj.Data.a = 2;
Это, очевидно, не работает, так как myObj.Data
не является объектом и не обладают теми же свойствами, как myObj._Data
.
Заранее благодарим за любую помощь.
Nice решение! Я не думаю, что нужно вернуть значение. – trincot
Имейте в виду, что прокси-сервер ES6 + работает только в новом браузере, а NodeJS v6 + – DiegoRBaquero
@trincot, предполагая строгий режим, это важно. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/set#Return_value – Gerrit0