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