Ошибки при извлечении обьектов из 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 более не является функцией... Но до этого же все работало!

введите сюда описание изображения

Обьясните, что пошло не так?

Я подозреваю, что при обратной конвертации строки в обьект, что-то ломается, но во-первых, я понятия не имею, что именно, а во-вторых, как это исправить?


Ответы (0 шт):