state lib
by evgkch
JavaScript
const PRIVATE = Symbol('private');
const model = {
[PRIVATE]: 0,
public: 'init'
};
const observe = (model, cb) => {
let cx = null;
const proxy = new Proxy(model, {
set(target, prop, value) {
target[prop] = value;
if (typeof(prop) == 'string')
{
clearTimeout(cx);
cx = setTimeout(cb, 0, target);
}
}
});
return proxy;
};
const data = observe(model, (model) => { console.log(model) });
data[PRIVATE] = 1;
data.public = 'updated';