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