Я немного запутался с оператором JavaScript delete
. Возьмите следующий кусок кода:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
После того, как этот фрагмент кода был выполнен, obj
равен null
, но foo
по-прежнему ссылается на объект в точности как obj
. Я предполагаю, что этот объект является тем же объектом, на который foo
указал.
Это смущает меня, потому что я ожидал, что запись delete obj
удалит объект, на который obj
указывает в памяти, а не только переменную obj
.
Это потому, что сборщик мусора в JavaScript работает на основе сохранения / выпуска, поэтому, если бы у меня не было других переменных, указывающих на объект, он был бы был бы удален из памяти?
(Кстати, мое тестирование проводилось в Safari 4.)