Я использую featherlight
library, чтобы показать лайтбоксы. Я использую кофе и так в начале моего файла JS У меня естьУтечки памяти в Javascript
myFeatherBox = void 0;
Позже, когда я хочу, чтобы использовать его я делать такие вещи, как это:
if (myFeatherBox != null) {
myFeatherBox.close();
}
myFeatherBox = $.featherlight("<div>whatever</div>");
я проверить нуль в случае фейербокс уже открыт, и в этом случае я его закрываю. Чтобы не оставлять массы этих вещей в памяти, я, по сути, создаю новую коробку в старой переменной.
Так что мне интересно, просто ли это сирота в старой коробке в памяти (и если да, то как ее очистить) и является ли это способом делать что-то.
«ли это просто сирота старого окна в памяти» - да, это то, что он делает. «как его очистить» - не нужно волноваться, осиротевшие объекты будут автоматически удаляться сборкой мусора. – JimmyB
«ли это способ сделать что-то» - Да, так оно и делается. На самом деле, нет явного способа удалить объект из памяти. Когда он больше не будет указан, gc позаботится об этом. В gc'ed языках утечки памяти появляются только при сохранении ссылок на объекты, хотя они больше не будут использоваться. Это происходит, например, когда вы продолжаете добавлять новые объекты в растущий массив/список, не удаляя их, даже если вы можете использовать только последние три из них. – JimmyB
BTW, не нужно сохранять ссылку на текущий свет. Вы можете вызвать '$ .featherlight.current()' в любой точке. Более того, '$ .featherlight.close()' закроет текущий featherlight, если он есть. –