Я немного запутался с оператором 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.)