javascript - 垃圾回收 : object properties

标签 javascript

假设我有一个包含另一个对象作为其属性的对象

var obj = {
    '1': {...},
    '42': {...}
};

obj 超出范围时 - 是隐式销毁所有嵌套对象还是我需要遍历它们并显式删除

最佳答案

是的,除非另一个引用仍然存在:

var obj = {
    '1': {...},
    '42': {...}
};


var save = obj['1'];

obj = null; 

在垃圾收集之后,假设没有创建其他引用,那么 obj 和 obj['42'] 的空间将被回收,saved 的值当然会被保留。

Mea culpa :正如评论中提到的那样,我原来的 delete obj 是无效的,因为 obj 被声明为 var。如果 obj 是一个全局对象,因此是全局对象的一个​​属性,delete 就可以正常工作。要有效地删除 var,请使用 obj = null。 我通过测试了解到的一件事是 delete 运算符并返回 truefalse

关于javascript - 垃圾回收 : object properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610964/

相关文章:

javascript - 在 angularjs 中使用 radio

javascript - 如何在nodejs中发送响应错误代码

Javascript 使用函数访问其他类

javascript - 如何使用 NightmareJs 串行下载多个文件?

javascript - Jscolor 显示不正确

php - 如何从网页上的文本框中而不是控制台获取 Ratchet 聊天应用程序中的输入?

javascript - 使用 React 并使用相同组件处理不同 HTML 结构的方法

javascript - jQuery .length 是否已经准备好迎接 DOM 了?

javascript - 为什么新的Boolean(false)为true?

javascript - 获取图像的子字符串没有