Конструктор массива объектов и работа с ними через 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 - че за зверь? |
Часовой пояс GMT +3, время: 00:09. |