Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.10.2015, 14:01
Интересующийся
Отправить личное сообщение для pepel266 Посмотреть профиль Найти все сообщения от pepel266
 
Регистрация: 31.10.2015
Сообщений: 10

Конструктор массива объектов и работа с ними через 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?
Ответить с цитированием
  #2 (permalink)  
Старый 31.10.2015, 15:04
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

pepel266, никак, в локальное хранилище записывается всегда строка. Т.е., чтобы что-то изменить, мы получаем строку, преобразуем в объект, что-то меняем, преобразуем обратно в строку и записываем назад.

Если Вы хотите, чтобы при каждом изменении свойств объекта оно автоматически обновлялось в хранилище, то придётся вешать сеттеры.
Ответить с цитированием
  #3 (permalink)  
Старый 31.10.2015, 15:58
Интересующийся
Отправить личное сообщение для pepel266 Посмотреть профиль Найти все сообщения от pepel266
 
Регистрация: 31.10.2015
Сообщений: 10

Сообщение от Ruslan_xDD Посмотреть сообщение
[b]то придётся вешать сеттеры.
Можно подробнее? Я только изучаю JS и не все сразу сходу понимаю....
Не совсем разобрался с "конструкторами и прототипами"
Подскажите в каком направлении двигаться в расширении конструктора BaseObj()?
Ответить с цитированием
  #4 (permalink)  
Старый 31.10.2015, 17:14
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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_mart, 31.10.2015 в 18:30.
Ответить с цитированием
  #5 (permalink)  
Старый 31.10.2015, 18:08
Интересующийся
Отправить личное сообщение для pepel266 Посмотреть профиль Найти все сообщения от pepel266
 
Регистрация: 31.10.2015
Сообщений: 10

Спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 31.10.2015, 18:16
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Ruslan_xDD,
Сообщение от Ruslan_xDD
this.data = object && JSON.parse(object) || {};
this.data здесь чему будет равно ?
Ответить с цитированием
  #7 (permalink)  
Старый 31.10.2015, 18:31
Интересующийся
Отправить личное сообщение для pepel266 Посмотреть профиль Найти все сообщения от pepel266
 
Регистрация: 31.10.2015
Сообщений: 10

Как я понял тому,что вы запишите в base.data, например:
base.data.foo = ArrBase();
будет создан объект foo в котором будет массив объектов созданных с помощью ArrBase().
Ответить с цитированием
  #8 (permalink)  
Старый 31.10.2015, 18:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

pepel266,
Работа с локальным хранилищем, как с объектом
Ответить с цитированием
  #9 (permalink)  
Старый 31.10.2015, 19:16
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

рони, прикольно, что кто-то помнит о моей древней поделке.

Последний коммит сделан давно, да и тестов нету. Несмотря на эти минусы, недавно заюзал эту штуку снова, работает хорошо. Вот репка.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #10 (permalink)  
Старый 31.10.2015, 19:56
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от FINoM
прикольно, что кто-то помнит о моей древней поделке
так может пора переписать с учетом нынешних знаний, на гетерах сеттерах, добавить подписку на события
defaultDuration - че за зверь?
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
РАБОТА С ОБЪЕКТАМИ ПОЛУЧЕННЫМИ ЧЕРЕЗ get() Brook jQuery 4 16.02.2013 19:21
Автоматическая работа script в подгруженном через AJAX div'e rost Javascript под браузер 4 06.07.2012 21:24
Extention для FF. Работа с localStorage Mad LIR Firefox/Mozilla 1 11.07.2011 15:41
удаление объектов и тонкая работа с ними(помогите) digitalbrain Общие вопросы Javascript 4 28.07.2010 21:17
Удаленная работа на сайте через html страницу Sanches Общие вопросы Javascript 19 11.08.2009 13:21