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