У меня есть дерево объектов javascript. Назовем это «семьей», которая может содержать любое количество определенных объектов («родителей»), каждая из которых может содержать любое количество «дочерних» объектов. Количество уровней в этой структуре известно, и каждый уровень дерева содержит только объекты один определенный тип.Сохранение объекта Javascript
Все объекты имеют данные и методы.
Я хочу, чтобы сохранить структурированные данные в databese. JSON.stringify() делает его идеальным извлечения данных, а также сохранение структуры. Но как чтобы вернуться к объектам? JSON.parse() не работает, потому что он воссоздает объект без методов.
Что мне делать в этом случае? Должен ли я писать свою собственную функцию для воссоздания объекта из строки? ould Я как-то сохраняю данные вместе с методами (кажется, отходы).
Как я знаю, структура была бы очень удобной, если бы была возможность указать на объект и сказать «это родительский объект», и он получит методы. Тогда я мог бы легко пройти через него. Но я не знаю, как это сделать, и я также опасаюсь, что мои конструкторы могут установить некоторые значения по умолчанию.
Объектами Конструкторы будет выглядеть примерно так:
function lines()
{
this.lines = [];
this.height = 0.5*theMargin;
this.addLine = addLine;
function addLine(newline)
{
this.lines.push(newline);
this.height += newline.height;
}
}
function aLine()
{
this.dots = [];
this.height = 0;
this.length = indent;
this.insertDot = insertDot;
function insertDot(pos,newDot)
{
this.dots.splice(pos,0,newDot);
this.length += newDot.length;
this.height = Math.max(this.height,newDot.height);
if (this.length > maxLineLength)
{ "I will not go into details here" }
}
}
Тогда я бы сделал так:
var a = new lines();
var testline = new aLine();
var testdot = new aDot();
testdot.height = 10;
testdot.length = 15;
testline.insertDot(0,testdot);
a.addLine(testline);
a.addLine(testline);
Тогда я хочу, чтобы сохранить данные о длине и высоте. И структура, чтобы знать, какая точка принадлежит в какой строке.
Я отправляю эти данные на веб-сервер. Я думаю, что это ключевые линии, чтобы понять используемый подход:
post = "name=" + name + "&tab=" + JSON.stringify(file);
req.open("POST", "saveFile.php", true);
req.send(post);
Сохраненный файл сохраняет именно то, что я хотел - структуру и данные. Но я не знаю, как заставить его снова стать объектом. Я не настаиваю на использовании метода JSON.stringify(). Мне понравился бы любой подход, который позволил бы мне сохранить содержимое без повторного сохранения методов.
то, что вам нужно сохранить это состояние 'из object', методы не являются частью насытить –
как добавляются ваши методы? –
@ DanielA.White Я добавляю их в конструктор объектов с такими строками: this.print = printLines; function printLines() {...} –