json.stringify не обрабатывает методы объекта
Я пытаюсь разработать автономное приложение HTML5, которое должно работать в большинстве современных браузеров (Chrome, Firefox, IE 9+, Safari, Opera). Так как IndexedDB не поддерживается Safari (пока), а WebSQL устарел, я решил использовать localStorage для хранения пользовательских объектов JavaScript иJSON.stringify()
/JSON.parse()
положить или вытащить объекты. Тем не менее, я узнал, чтоJSON.stringify()
не обрабатывает методы. Вот пример объекта с простым методом:
var myObject = {};
myObject.foo = 'bar';
myObject.someFunction = function () {/*code in this function*/}
Если я раскрою этот объект (а затем поместу его в localStorage), все, что будет сохранено,myObject.foo
неmyObject.someFunction()
.
//put object into localStorage
localStorage.setItem('myObject',JSON.stringify(myObject));
//pull it out of localStorage and set it to myObject
myObject = localStorage.getItem('myObject');
//undefined!
myObject.someFunction
Я уверен, что многие из вас, вероятно, уже знают об этом ограничении / функции / как бы вы это ни называли. Обходной путь, который я придумала, заключается в создании объекта с помощью методов (myObject = new objectConstructor()
), вытащите свойства объекта из localStorage и назначьте их новому объекту, который я создал. Я чувствую, что это обходной подход, но я новичок в мире JavaScript, поэтому я решил его. Итак, вот мой главный вопрос: я бы хотел, чтобы весь объект (свойства + методы) был включен в localStorage. Как мне это сделать? Если вы можете показать мне лучший алгоритм или другой метод JSON, о котором я не знаю, я был бы очень признателен.