Как сохранить функцию в local storage?
Возникла заминка при работе с Local Storage, есть объект с переменными вида:
var Data = {
ccurrentFunction: null,
Name: "Павлик",
crank: "Начинающий",
cday: 1,
ctime: 5,
};
В этот объект данные перезаписываются, а потом извлекаются при необходимости. Особенно важно свойство currentFunction.
В него сохраняется имя функции, которая будет вызываться при загрузке.
Вот пример:
function training(){
currentFunction = training;
// код JS
};
В объект передаётся имя функции:
Data.ccurrentFunction = currentFunction;
Далее просто перемещаем сформированный объект в Local Storage:
localStorage.setItem('savedata', JSON.stringify(Data));
В итоге объект сохраняется в хранилище, но без currentFunction, остальные есть.
Т.е. имя функции, воспринимаемое как функция, не преобразовывается в строку и вообще не записывается в хранилище.
Подскажите, пожалуйста, как можно передать имя функции в хранилище, чтобы потом извлечь его и вызвать.
Спасибо!
Ответы (1 шт):
Вот что происходит при преобразовании объекта в строку и обратно:
const func1 = () => {
console.log("функция")
}
const obj = {
boolean: true,
string: "строка",
number: 12345,
nul: null,
undfd: undefined,
inf: Infinity,
date: new Date(),
func1,
func2: func1,
func3: "func1"
}
const newObj = JSON.parse(JSON.stringify(obj))
console.log(newObj)
// {
// "boolean": true,
// "string": "строка",
// "number": 12345,
// "nul": null,
// "inf": null,
// "date": "2020-08-28T22:06:14.982Z",
// "func3": "func1"
// }
если Вы используете в нем структуры данных Map, Set, классы типа Date, Infinity, undefined, функции, типизированные массивы и др.
Самым простым вариантом будет записывать название функции в объект как строку:
func3: "func1"
и далее работать уже с ней.