【发布时间】:2010-10-19 01:29:45
【问题描述】:
我对 JavaScript 的 delete 运算符有点困惑。取以下代码:
var obj = {
helloText: "Hello World!"
};
var foo = obj;
delete obj;
在这段代码执行之后,obj 是null,但foo 仍然指的是一个与obj 完全相同的对象。我猜这个对象与foo 指向的对象是同一个对象。
这让我很困惑,因为我预计写入 delete obj 会删除 obj 在内存中指向的对象,而不仅仅是变量 obj。
这是因为 JavaScript 的垃圾收集器在保留/释放的基础上工作,所以如果我没有任何其他变量指向该对象,它会从内存中删除吗? p>
(顺便说一下,我的测试是在 Safari 4 中完成的。)
【问题讨论】:
-
@Steve Harrison delete 不是用于删除 javascript 中的对象 delete 用于在您的情况下删除对象键
var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;对象未删除检查obj删除用法:delete obj.helloText然后检查foo now foo is an empty object -
@UmairAhmed,意译:"""
delete不用于删除 javascript 中的对象。delete用于删除对象键。在您的情况下var obj = { helloText: "Hello World!" }; var foo = obj; delete obj;,对象不是删除。检查obj。接下来,运行delete obj.helloText,你可以看到foo现在指向一个空对象。"""
标签: javascript pointers object memory-management garbage-collection