Я немного смущен оператором JavaScript delete
. Рассмотрим следующий фрагмент кода:Удаление объектов в JavaScript
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
После этого фрагмента кода была выполнена, obj
является null
, но foo
до сих пор относится к объекту, точно как obj
. Я предполагаю, что этот объект является тем же объектом, на который указывает foo
.
Это меня смущает, потому что я ожидал, что запись delete obj
удалила объект, указывающий на память, а не только переменную obj
.
Это потому, что сборщик мусора JavaScript работает на основе сохранения/освобождения, так что если бы у меня не было никаких других переменных, указывающих на объект, то удалил бы из памяти??
(Кстати, мое тестирование было сделано в Safari 4.)
Для справки. https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator –
Полная статья по ключевому слову delete http://webcache.googleusercontent.com/search?q=cache:auElwuFsub0J:perfectionkills.com/ понимание-delete/+ delete + javascript & cd = 2 & hl = en & ct = clnk & client = safari –
Ссылка выше должна быть: http://perfectionkills.com/understanding-delete – johnmdonahue