Конструктор массива объектов и работа с ними через localStorage
Добрый день, есть вот такой код:
//конструктор объекта.... function BaseObj(){ this.name = nameCase(); this.rest = checkCache(); } //конструктор массива объектов function ArrBase(){ var datBaseArr = []; var length = prompt('кол - во объектов:',1); if(!isNumeric(length)){ ArrBase(); } for(var i = 0;i < length;i++){ datBaseArr.push(new BaseObj()); } return datBaseArr; } //создание локальной базы данных на основе конструктора объектов. localStorage.setItem('bases',JSON.stringify(ArrBase())); Вопрос мой в следующем, нужна подсказка по доработке конструктора для работы с отдельными объектами из массива. Допустим создано и записано в localStorage 3 объекта: {name:молоко,rest:8} {name:картошка,rest:3} {name:кирпич,rest:7} Как мне получить доступ к любому из них в отдельности и после манипуляций с ним изменения сохранились в localStorage? |
pepel266, никак, в локальное хранилище записывается всегда строка. Т.е., чтобы что-то изменить, мы получаем строку, преобразуем в объект, что-то меняем, преобразуем обратно в строку и записываем назад.
Если Вы хотите, чтобы при каждом изменении свойств объекта оно автоматически обновлялось в хранилище, то придётся вешать сеттеры. |
Цитата:
Не совсем разобрался с "конструкторами и прототипами" Подскажите в каком направлении двигаться в расширении конструктора BaseObj()? |
pepel266, лучше так:
function storageObject(itemName) { var object = window.localStorage.getItem(itemName); this.itemName = itemName; this.data = object ? JSON.parse(object) : {}; }; storageObject.prototype.remove = function() { window.localStorage.removeItem(this.itemName); }; storageObject.prototype.save = function() { window.localStorage.setItem(this.itemName, JSON.stringify(this.data)); }; var base = new storageObject('base'); base.data.foo = 'bar'; base.data.one = 'two'; base.data.bla = {}; base.save(); |
Спасибо!
|
Ruslan_xDD,
Цитата:
|
Как я понял тому,что вы запишите в base.data, например:
base.data.foo = ArrBase(); будет создан объект foo в котором будет массив объектов созданных с помощью ArrBase(). |
|
рони, прикольно, что кто-то помнит о моей древней поделке.
Последний коммит сделан давно, да и тестов нету. Несмотря на эти минусы, недавно заюзал эту штуку снова, работает хорошо. Вот репка. |
Цитата:
defaultDuration - че за зверь? |
Цитата:
defaultDuration - это количество миллисекунд, интервала сохранения в хранилища. Вот здесь подробнее: http://habrahabr.ru/post/144998/ |
не я об этом defaultDuration = 5000;
self.duration = duration || defaultDuration; defaultDuration больше нигде не используется комментариев нет, чего сразу не self.duration = duration || 5000; //так гораздо понятнее и без comments |
Poznakomlus, понял. Значит, это опечатка.
|
Прошу потестировать
Цитата:
|
почувствуй разницу :)
https://yadi.sk/i/LhzJNP5FkCHmp https://yadi.sk/i/nRhKDJL8kCHiz https://yadi.sk/i/FXT4RxIGkCHxV --- Poznakomlus, сейчас читаю твои комментарии к коммитам. Что получается: https://github.com/Poznakomlus/local...commits/master Цитата:
2. отдельно хотелось бы отметить "My First commit" восемь раз))) |
Цитата:
|
nerv_, у меня погляди https://github.com/Maxmaxmaximus/gul...commits/master :lol:
|
Часовой пояс GMT +3, время: 18:19. |