У меня есть программа, которая использует Javascript в качестве языка сценариев, привязанного к более крупному приложению C ++.Я использую V8 и webkit взаимозаменяемо, но основное время выполнения не должно иметь значения для этого вопроса.
В этом приложении у меня динамически созданные объекты будут получать обратные вызовы.Я создам эту привязку обратного вызова следующим образом ...
function f() {
var obj = CreateNewCallbackObj();
obj.onCallback = dowork; // dowork is a function
}
Очевидно, что это будет иметь проблемы с сборкой мусора, потому что obj вышел из области видимости и в конечном итоге будет удален.
Я хочу, чтобы объект сам управлял своим временем жизни.Объект в конечном итоге получит обратный вызов, который будет сигнализировать об окончании его жизни, и когда это произойдет, он может удалить себя.
Одна мысль состоит в самоотсылке путем добавления obj.myself = obj.Это кажется неправильным способом сделать это, но он может работать, если алгоритм сбора мусора не умный.
Есть ли правильный способ сделать это?Не существует базового постоянного DOM, который создан для хранения объектов, все объекты JS распределяются динамически по мере необходимости, но требуется какой-то способ остаться внутри механизма JS.