|
Работа с локальным хранилищем, как с объектом
http://habrahabr.ru/post/143597/
Выношу на обсуждение своё небольшое изобретение для тех, кого нет на хабре и для тех, кого харит там комментировать. Здесь хотя-бы можно нормально обосрать, не боясь слива. |
Из за наличия таймера с таким объектом нужно работать специфически например насколько я понимаю его в цикл нельзя вставить
|
Цитата:
|
А хотя, чего бы нет? Взять объект, поработать с ним в цикле, а затем, после всех операций, присвоить.
|
мда, вариант интересный но не годный, например такой способ не вызовет геттер и вся твоя реализация идет прахом:
objectLocalStorage = { a: 4, b: {c: 2} }; var b = objectLocalStorage.b; b.c = 10; alert( objectLocalStorage.b.c ); // alert 2Я делал что-то подобное, но отказался от этого решения из-за этого недостатка. |
devote, угу, я внизу указал на это. Думаю, решение найти можно, но оно будет очень тяжелым. То есть для каждого ключа каждого подобъекта добавить геттер и хранить это всё как-нибудь.
С другой стороны, с этим объектом можно поработать, а затем присвоить туда, откуда взял. Всё же некоторая оптимизация. |
Идея — говно :D
Цитата:
|
Цитата:
if(timer == null) { timer = setTimeout( function(){ var stringified = JSON.stringify( _objectLocalStorage ); // некое подобие оптимизации: если данные в объекте не изменились, // значит присваивания никакого не было, сработал обычный гет if( stringified !== localStorage.getItem( 'objectStorage' ) ) { // сохраняем localStorage.setItem( 'objectStorage', stringified ); } timer = null; }, 0); } |
Цитата:
|
Цитата:
не? |
Часовой пояс GMT +3, время: 07:44. |
|