我有一個程序,使用Javascript作爲腳本語言綁定到一個更大的C++應用程序。我可以交換使用V8和webkit,但底層運行時對這個問題應該不重要。垃圾收集關閉規則與Javascript
在這個應用程序中,我有動態創建的對象會收到回調。我將創建這個回調像這樣綁定...
function f() {
var obj = CreateNewCallbackObj();
obj.onCallback = dowork; // dowork is a function
}
顯然,這將有GC問題,因爲OBJ已經超出了範圍,並最終會被刪除。
我想要的是讓對象自我管理它的一生。該對象最終會收到一個回調,表示它的生命即將結束,如果發生這種情況,它可以刪除它自己。
一個想法是通過添加一個obj.myself = obj來自引用。這似乎是錯誤的做法,但它可能工作,除非垃圾收集算法很聰明。
有沒有正確的方法來做到這一點?沒有用於存儲對象的基礎持久性DOM,所有JS對象都根據需要動態分配,但需要一些方法在JS引擎中保留。