Javascript: Как уничтожить значение, на которое указывает группа переменных? - PullRequest
2 голосов
/ 09 декабря 2011

Итак, я знаю, как удалить одну переменную ... variable = null;или удалить переменную;но, скажем, у меня много разных переменных, которые все указывают на одно и то же значение, но я могу получить доступ только к нескольким из этих переменных, как я могу очистить это значение памяти.есть:

var a = {value:5};    //create the reference everything points to
var b = a;
var c = a;

CallFunctionThatKeepsReference(a);
//var x = a;          //x in this function but I can't directly access x.

a = null; b = null; c = null;    //the object still exists in x.
delete a; delete b; delete c;    //the object still exists in x.

//What can I do to accomplish this effect...
Nuke(a);  //or b, or c
//a,b,c,x now all point to null.

Я не могу получить доступ к x, потому что он хранится в функции, которую я вызываю.Это потому, что это гигантское закрытие и запускает асинхронный код setTimeout, поэтому он никогда не раскрывается.

1 Ответ

4 голосов
/ 09 декабря 2011

Я бы настоятельно рекомендовал другой подход к этому.JavaScript - это не C, поэтому вам не нужно полностью и явно восстанавливать всю вашу собственную память.Вместо этого напишите свой код, чтобы он хорошо работал с сборщиком мусора.В частности, убедитесь, что ваши переменные объявлены в функциях / замыканиях, на самом низком возможном уровне для того, что вам нужно сделать.После завершения функции все переменные и память будут автоматически использованы повторно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...