我对JavaScript的delete
操作符有点困惑。以下面这段代码为例:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
在这段代码执行之后,obj
是null
,但是foo
仍然引用一个与obj
完全相同的对象。我猜这个对象就是foo
指向的那个对象。
这让我很困惑,因为我以为写delete obj
会删除obj
在内存中指向的对象——而不仅仅是变量obj
。
这是因为JavaScript的垃圾收集器是在保留/释放的基础上工作的,所以如果我没有任何其他变量指向对象,它将将从内存中删除?
(顺便说一下,我的测试是在Safari 4中完成的。)