【发布时间】:2014-06-27 06:54:19
【问题描述】:
在我的代码中,我要删除自定义对象。我意识到,我们不能删除使用 'var' 声明的对象。 (阅读本文档后Delete operator)。
- 我的大部分对象都是使用“var”声明和初始化的。它们不能在单个删除语句中删除(除非我循环遍历它并删除每个属性。) 我可以将它们设置为“null”。
- 我的自定义对象的大小相对较大(可能会阻塞相当大的内存块。
为了更好的内存管理和性能,我应该使用“属性”还是“变量”来存储我的对象?它会有所作为吗?
请提供任何参考资料,以便更好地了解 javascript 中的“属性”和“变量”。
globalProp = {//can be deleted, it is a 'property' to global object.
'name': 'Mia',
'age': 34,
'sex': 'F'
};
var globalVar = {//can not be deleted with delete statement, it is variable of global object
'name': 'Lia',
'age': 25,
'sex': 'F'
};
(在上面的代码中,我们可以将 globalProp 称为 'window.globalProp' 但不能将 globalVar 称为 window.globalVar。)
【问题讨论】:
-
更正了我的问题中的一个陈述。
-
在 javascript 中,您通常可以让垃圾收集器处理您的对象,而您几乎不需要使用
delete运算符。你为什么这么担心内存管理?你想做什么? -
我根据用户选择的选项调用网络服务。我得到很多信息,我解析并存储在一个对象中。此信息进一步用于在网页上绘制图形。 ... 每次我从 Web 服务获取新信息时,用户都可以继续更改他的选项。我想删除创建的对象...
-
最后,确保您摆脱所有指向您的对象的引用。如果指向对象的变量在函数中,那么当函数完成时,它们会超出范围,因此您无需执行任何操作。如果您使用的是全局变量,那么将变量设置为不同的值(例如 null)应该可以解决问题。
标签: javascript memory