だから私はjavasciptスコーピングとプロトタイプエリアの崖から落ちたと思います。オブジェクトから単純なツリー構造を構築しようとしています。木を作るのは問題ありませんが、子供たち全員を集めようとすると、子供たちをつなぎ合わせることができないようです。コードを調べましたが、奇妙なスコープの問題が発生しているようで、理解できません。これは私が持っているコードです:
var Foo = function (value) {
this.value = value;
this.children = [];
}
Foo.prototype.getAllChildren = function () {
var childs = [];
for (var i = 0; i < this.children.length; i++) {
childs.push(this.children[i]);
childs.concat(this.children[i].getAllChildren());
}
return childs;
};
var foo1 = new Foo(1),
foo2 = new Foo(2),
foo3 = new Foo(3);
foo1.children.push(foo2);
foo2.children.push(foo3);
var children = foo1.getAllChildren(),
expected = foo1.children.concat(foo2.children);
上記のコードの結果を示すフィドルをここに作成しましたhttp://jsfiddle.net/e2zf8/1/
getAllChildren関数は、2つのFooのリストを返す必要がある場合にのみ、foo1に対して1つのFooを含むリストを返します。(はい、FooはFooの複数形です)。再帰、スコープ、プロトタイプスコープと関係があるようです。私は自分の間違いを正確に特定できないようで、どんな助け(または私の問題)も役に立ちます。