我有樹的JavaScript對象。我們稱之爲「家族」,它可以包含任意數量的可以包含任意數量的「子」對象的特定對象(「父母」)。此結構中的層級數是已知的,樹的每個級別只包含一個特定的類型。保存Javascript對象
所有的對象都具有數據和方法。
我想保存在databese的結構化數據。JSON.stringify()做它完美提取數據,並還節省的結構。但如何回到對象?JSON.parse()失敗,因爲它重新創建對象沒有方法。
我應該怎麼做在這種情況下?我應該寫我自己的函數重新創建從字符串的對象嗎?我應該將數據與方法一起保存(看起來很浪費)。
正如我所知道的結構,這將是非常方便的,如果將有可能指向一個對象,並說「這是一個父對象」,它會得到的方法。然後,我可以輕鬆地循環。但我不知道如何去做,而且我也擔心我的構造函數可能會將某些值設置爲默認值。
的對象構造函數可以是這個樣子:
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'的'狀態,方法是不沙爹 – 2013-04-09 14:04:16
的一部分,如何你的方法添加? – 2013-04-09 14:04:17
@ DanielA.White我將它們添加到對象構造函數中,如下所示:this.print = printLines;函數printLines(){...} – 2013-04-09 14:06:41