Я сделал то, что не разбивает существующие объекты хранилища, но создает оболочку, чтобы вы могли делать то, что хотите. Результатом является обычный объект, без методов, с доступом, как и любой объект.
Если вы хотите 1 localStorage
свойство для магии:
var prop = ObjectStorage(localStorage, 'prop');
Если вам нужно несколько:
var storage = ObjectStorage(localStorage, ['prop', 'more', 'props']);
Все, что вы делаете с prop
, или объекты внутри storage
будут автоматически сохранены в localStorage
. Вы всегда играете с реальным объектом, поэтому можете делать такие вещи:
storage.data.list.push('more data');
storage.another.list.splice(1, 2, {another: 'object'});
И каждый новый объект внутри отслеживаемого объекта будет автоматически отслеживаться.
большой недостаток: это зависит от Object.observe()
, поэтому он имеет очень ограниченную поддержку браузера. И не похоже, что он скоро появится в Firefox или Edge.