2017-01-11 6 views
1

Я сохраняю объект с именем session в своем локальном хранилище для дальнейшего использования после обновления браузера. но у меня есть много связанных с ним функций, таких как session.getUserCount(), session.getPeerIds() и т. д. Я использую .toString(), чтобы сохранить его в локальном хранилище, с помощью этого я могу получить прямые vatiables, такие как session.id, session.initiator, но все функции теперь возвращают значение как null.Как сохранить функции или значения функции и повторно использовать их после обновления браузера

Пожалуйста, помогите мне в сохранении значений всех функций в некотором хорошем виде.

Заранее спасибо.

ответ

1

Вы должны реализовать внутренний объект data JSon, fromJSON и toJSON методы Session класса

Но вы должны помнить, что data объект может только сохранить number, string, null, array и простой object

class Session { 
 
    constructor(id) { 
 
     this.data = { 
 
      id: id, 
 
      createdAt: Date.now(), 
 
      userCount: 0, 
 
      user: { 
 
       name: 'foo', 
 
       likeIds: [1, 56] 
 
      } 
 
     } 
 
    } 
 
    getUserCount() { 
 
     return this.data.userCount; 
 
    } 
 
    
 
    fromJSON(data) { 
 
     this.data = data; 
 
    } 
 

 
    toJSON() { 
 
     return this.data; 
 
    } 
 
} 
 

 

 
// Usage 
 
var session = new Session(1); 
 
localStorage.abc = JSON.stringify(session); 
 

 
var restoredSession = new Session(); 
 
try { 
 
    restoredSession.fromJSON(JSON.parse(localStorage.abc)); 
 
} catch (e) { 
 
    console.error('JSON parse error'); 
 
} 
 

 
console.log(restoredSession);

 Смежные вопросы

  • Нет связанных вопросов^_^