Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.11.2014, 10:50
Интересующийся
Отправить личное сообщение для spin Посмотреть профиль Найти все сообщения от spin
 
Регистрация: 14.10.2014
Сообщений: 11

Html5 local storage
var obj = {val: "aaa"};
var test =
{
 o1: obj,
 o2: obj
};
console.log(test.o1==test.o2);

localStorage.test = JSON.stringify(test);
test = JSON.parse(localStorage.test);
console.log(test.o1==test.o2);


закономерно получаем true, false

вопрос:
есть ли способ так засунуть объекты в storage
чтоб было true, true при обратной загрузке
???
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2014, 11:09
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Нет. Объекты сравниваются по ссылкам, а не по строению. Хочешь сравнения по строению - сравнивай JSON-представление.
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2014, 11:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от spin
есть ли способ так засунуть объекты в storage
чтоб было true, true при обратной загрузке
Простой "загрузкой" ты необойдешся... "Вложеный" объект нужно записывать отдельно в сторадж... Потом его читать, ссыку на него присваивать соответствующим элементам материнского объекта.
Только тогда будет тебе true...
Ответить с цитированием
  #4 (permalink)  
Старый 24.11.2014, 11:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Типа такого...

var obj = {val: "aaa"};
var test =
{
 o1: obj,
 o2: obj
};
alert(test.o1==test.o2);

localStorage.test = JSON.stringify(test);
localStorage.test1 = JSON.stringify(obj);
test = JSON.parse(localStorage.test);
obj = JSON.parse(localStorage.test1);
test.o1=obj;
test.o2=obj;
alert(test.o1==test.o2);
Ответить с цитированием
  #5 (permalink)  
Старый 24.11.2014, 11:33
Интересующийся
Отправить личное сообщение для spin Посмотреть профиль Найти все сообщения от spin
 
Регистрация: 14.10.2014
Сообщений: 11

Сообщение от ksa Посмотреть сообщение
Типа такого...

var obj = {val: "aaa"};
var test =
{
 o1: obj,
 o2: obj
};
alert(test.o1==test.o2);

localStorage.test = JSON.stringify(test);
localStorage.test1 = JSON.stringify(obj);
test = JSON.parse(localStorage.test);
obj = JSON.parse(localStorage.test1);
test.o1=obj;
test.o2=obj;
alert(test.o1==test.o2);
а как быть когда
а) таких ссылок дофига (десятки, может сотни)
ссылки на объекты лежат в двухмерном массиве
б) заранее неизвестно какие именно ячейки ссылаются на один
объект, а какие нет
это всё динамически
Ответить с цитированием
  #6 (permalink)  
Старый 24.11.2014, 11:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от spin
а как быть когда
Сообщение от Erolast
Хочешь сравнения по строению - сравнивай JSON-представление.
var obj = {val: "aaa"};
var test =
{
 o1: obj,
 o2: obj
};
alert(test.o1==test.o2);

localStorage.test = JSON.stringify(test);
test = JSON.parse(localStorage.test);
alert(JSON.stringify(test.o1)===JSON.stringify(test.o2));
Ответить с цитированием
  #7 (permalink)  
Старый 24.11.2014, 11:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от spin
заранее неизвестно какие именно ячейки ссылаются на один
объект, а какие нет
Тогда стоит первым делом определиться нужны ли тебе сравнения именно ссылок на объекты...
Может тебе хватит сравнения по советам выше?
Ответить с цитированием
  #8 (permalink)  
Старый 24.11.2014, 11:58
Интересующийся
Отправить личное сообщение для spin Посмотреть профиль Найти все сообщения от spin
 
Регистрация: 14.10.2014
Сообщений: 11

Сообщение от ksa Посмотреть сообщение
Тогда стоит первым делом определиться нужны ли тебе сравнения именно ссылок на объекты...
Может тебе хватит сравнения по советам выше?
дело не столько в сравнении
нужна возможность когда изменил объект
и изменилось содержимое ячеек которые на него ссылаются
Ответить с цитированием
  #9 (permalink)  
Старый 24.11.2014, 12:47
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Тогда вариант ksa.
Цитата:
а как быть когда
а) таких ссылок дофига (десятки, может сотни)
ссылки на объекты лежат в двухмерном массиве
б) заранее неизвестно какие именно ячейки ссылаются на один
объект, а какие нет
это всё динамически
Циклы пошто?
Хранишь в базе два объекта - в одном этот свой хеш с какими-нибудь идентифицирующими объекты значениями, а в другом сами объекты по идентифицирующим значениям. При загрузке просто пройтись циклами.
Ответить с цитированием
  #10 (permalink)  
Старый 24.11.2014, 13:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от spin
нужна возможность когда изменил объект
и изменилось содержимое ячеек которые на него ссылаются
Тогда нужны сравнения вовремя записи... Хранить "одинаковое" отдельно, потом как-то прописывать - де это вон то, ранее сохраненное...
При чтении различать, что это значение - отдельно сохраненный объект, его нужно еще прочитать и переприсвоить...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свободное место в Local Storage alexandr2006 Элементы интерфейса 3 11.06.2014 09:50
HTML5 Geolocation API, вопрос о снятии данных User-Agent (X)HTML/CSS 2 22.02.2013 20:09
Не выгружает значение из Local Storage на другой странице x3zone Events/DOM/Window 3 09.10.2012 10:18
Обработка события с Local Storage taobo Events/DOM/Window 6 29.08.2012 14:36
vkontakte, html5 и как почему не перезагружается страница olga153b Events/DOM/Window 10 02.11.2011 15:20