Ошибки при извлечении обьектов из localstorage
И снова нужна помощь специалистов. Итак, есть у меня две функции - сохранение обьекта в локальное хранилище и извлечение обекта из локального хранилища:
let Save = [];
let SaveKey = '';
function SaveGame(el) {
Save[1] = CASTLE;
Save[2] = summary;
// Условие выбора ячейки сохранения в зависимости от нажатой кнопки меню "Соранения"
if (el.closest('#bs1')) {
SaveKey = "Save1";
}
// Проверка на пустоту данных в локальном хранилище. Если ничего нет, просто записываем данные
if (localStorage.getItem(SaveKey) === null) {
localStorage.setItem(SaveKey, JSON.stringify(Save));
} else {
document.getElementById('save').style.display = 'none';
document.getElementById('overwriteSave').style.display = 'block';
}
}
function LoadGame(el) {
var a = '';
if (el.closest('#bl1')) {
a = "Save1";
}
if (localStorage.getItem(a)!= null) {
Save = JSON.parse(localStorage.getItem(a));
CASTLE = Save[1];
summary = Save[2];
}
}
а есть у меня обьект, который сохраняется и извлекается из хранилища с помощью этих функций:
const GENDER_MEN = 0,
GENDER_FEMALE = 1;
const CHILDREN = 4;
let CASTLE = {
social: {
people: [],
happy: 100,
summary,
changeSummary(people, delta){
summary.TOTAL += delta;
//---------------------------------------------------------
if (people.age < 18) { summary[`${CHILDREN}`] += delta
summary[`${CHILDREN}${people.gender}`] += delta;
};
//---------------------------------------------------------
if (people.gender == GENDER_MEN) { summary[`${GENDER_MEN}`] += delta};
},
addPeople(people) {
this.people.push(people)
this.changeSummary(people, +1)
},
removePeople(people) {
const elemIndex = this.people.findIndex(e =>
e.gender === people.gender
&& e.socialStats === people.socialStats
)
let elemPeople = this.people[elemIndex];
if (elemIndex !== -1){
this.people.splice(elemIndex, 1)
this.changeSummary(elemPeople, -1)
}
},
removeChild() {
const elemIndex = this.people.findIndex(e =>
e.age < 18
)
let elemPeople = this.people[elemIndex];
if (elemIndex !== -1){
this.people.splice(elemIndex, 1)
this.changeSummary(elemPeople, -1)
}
},
},
};
И вот значит какая проблема: до того, как я сохраняю этот обьект в локальное хранилище, все функции в обьекте работают отлично, но когда я загружаю обьект из хранилища, система начинает ругаться на то, что CASTLE.social.addPeople более не является функцией... Но до этого же все работало!
Обьясните, что пошло не так?
Я подозреваю, что при обратной конвертации строки в обьект, что-то ломается, но во-первых, я понятия не имею, что именно, а во-вторых, как это исправить?
