這是我在學習Javascript和同時製作應用程序的過程中遇到的。Javascript遞歸父 - >子 - >父 - >子引用,我需要使用替代嗎?
var A = function (parent) {
this.parent = parent;
},
b = new Object();
b.a = new A(b);
這段非常簡單的代碼產生了一些相當有趣的東西。
console.log(b.a.parent.a.parent.a);
這是否會引起其他問題?因爲我正計劃在我的應用程序中使用類似的東西。
我會使用它的原因是因爲我需要引用屬於父級的變量。
這幾乎與here相同。但是,我不能在這裏使用閉包,因爲我甚至沒有最外層的功能!
的我的代碼精簡版本如下:
var Scratchpad = function (canvas) {
var ctx = canvas.getContext('2d');
ctx.childMustAccessThis = 3;
ctx.Brush = new Brush(ctx);
return ctx;
},
Brush = function (parent) {
this.parent = parent;
// Other vars
};
Brush.prototype.getContext = function() {
return this.parent.childMustAccesThis;
}
我需要與他們各自的刷來使這些暫存器的多個(修改上下文對象)。
我不知道該怎麼做,這似乎是無害的,但我覺得這是不好的做法。
我試過一些其他的東西,比如在鏈接的SO帖子中描述的封閉。但是,當然,這是行不通的,因爲我的Scratchpad函數不會自行返回,而是返回一個修改的ctx對象,所以任何閉包變量都會被垃圾回收(對嗎?至少它們已經消失了)。
我的其餘嘗試依賴於JavaScript對象行爲的錯誤理解,所以這些都不值得一提。
那麼,我該怎麼做呢?保持現在的狀態?或者你有什麼建議可以更好地處理這個問題?