Конструктор массива объектов и работа с ними через 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, время: 05:17. |