Я трохи плутаюся з deleteоператором JavaScript . Візьміть такий код:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
Після того, як цей фрагмент коду був виконаний, objє null, але fooвсе ще відноситься до об'єкта точно так само obj. Я здогадуюсь, що цей об’єкт - той самий об’єкт, на який fooвказували.
Це мене бентежить, тому що я очікував, що написання delete objвидалить об’єкт, який objвказував на пам'ять, а не лише змінну obj.
Це тому, що JavaScript Garbage Collector працює на основі збереження / випуску, так що, якщо б у мене не було жодних інших змінних, що вказували б на об'єкт, його було б видалено з пам'яті?
(До речі, моє тестування було зроблено в 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тепер вказує на порожнє об’єкт. "" "