Я немного запутался с 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теперь указывает на пустой объект. "" "