我有一个程序,使用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引擎中保留。