Восстановление объекта, сериализованного в JSON - PullRequest
6 голосов
/ 26 августа 2011

В моем веб-приложении я сериализую объекты для хранения, используя JSON.stringify (), как описано здесь . Это здорово, и я могу легко воссоздать объекты из строк JSON, но я теряю все методы объектов. Есть ли простой способ добавить эти методы обратно к объектам, которые я пропускаю - возможно, с участием прототипирования, с чем я не слишком знаком?

Или это просто случай создания собственной сложной функции для этого?

Редактировать: В идеале я ищу что-то вроде:

Object.inheritMethods(AnotherObject);

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Если у вас есть объект после вызова JSON.parse, у вас есть много вариантов.Вот несколько примеров.

  1. Mixin

    Есть много способов сделать это, которые эта статья хорошо описывает.Однако вот простой пример, который не требует никаких новых языковых возможностей.Помните, что объект - это просто карта, поэтому JS позволяет легко добавлять дополнительные свойства к объекту.

    var stuffToAdd = function() {
        this.name = "Me";        
    
        this.func1 = function() {
            print(this.name);
        }
    
        this.func2 = function() {
            print("Hello again");
        }
    }
    
    var obj = JSON.parse("{}");
    stuffToAdd.call(obj);
    
  2. Прототип

    Используйте метод Object.create , упомянутый Феликсом.Поскольку это предлагается только в ES5, вы можете использовать шим , чтобы гарантировать его доступность.

0 голосов
/ 20 февраля 2018

Старый вопрос, но я нашел его при поиске этой проблемы сегодня.Я нашел решение в другом месте и обновление (ES6):

Object.assign (new myclass (), jsonString);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...