javascript オブジェクトのツリーがあります。これを「ファミリー」と呼びましょう。これには、任意の数の特定のオブジェクト (「親」) を含めることができ、それぞれに任意の数の「子」オブジェクトを含めることができます。この構造のレベル数は既知であり、ツリーの各レベルには次のオブジェクトのみが含まれます。ある特定のタイプ。
すべてのオブジェクトにはデータとメソッドがあります。
構造化データをデータベースに保存したい。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() メソッドの使用を主張しているわけではありません。メソッドを繰り返し保存せずにコンテンツを保存できるアプローチをお勧めします。