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 при обратной загрузке ??? |
Нет. Объекты сравниваются по ссылкам, а не по строению. Хочешь сравнения по строению - сравнивай JSON-представление.
|
Цитата:
Только тогда будет тебе true... |
Типа такого...
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); |
Цитата:
а) таких ссылок дофига (десятки, может сотни) ссылки на объекты лежат в двухмерном массиве б) заранее неизвестно какие именно ячейки ссылаются на один объект, а какие нет это всё динамически |
Цитата:
Цитата:
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)); |
Цитата:
Может тебе хватит сравнения по советам выше? |
Цитата:
нужна возможность когда изменил объект и изменилось содержимое ячеек которые на него ссылаются |
Тогда вариант ksa.
Цитата:
Хранишь в базе два объекта - в одном этот свой хеш с какими-нибудь идентифицирующими объекты значениями, а в другом сами объекты по идентифицирующим значениям. При загрузке просто пройтись циклами. |
Цитата:
При чтении различать, что это значение - отдельно сохраненный объект, его нужно еще прочитать и переприсвоить... |
Часовой пояс GMT +3, время: 20:10. |