1
所以我認爲我已經從javascipt範圍和原型區域的懸崖墜落。我試圖用對象構建一個簡單的樹結構。建樹不是問題,但是當我試圖讓所有的孩子們,我似乎無法將它們連接在一起。我已經走過了代碼,似乎有一些奇怪的範圍問題正在發生,我無法弄清楚。這是我的代碼:Javascript原型範圍和遞歸問題
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功能只與一個富返回一個列表foo1時,它應該返回兩個Foo的列表。 (是的Foo是Foo的複數)。它似乎與遞歸,範圍和原型範圍有關。我似乎無法確定我的錯誤,任何幫助(或我的問題)都會有所幫助。
什麼是一個巨大的腦屁。我沒有意識到它只是返回一份副本。我認爲它像推動一樣運作。這實際上比我預期的要好。我肯定會使用覆蓋解決方案。它只是有點混淆,某些數組方法變異,有些則不變。 – Wilile 2013-03-13 17:13:08