|
Работа с локальным хранилищем, как с объектом
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, время: 15:59. |
|