销毁构造函数实例

Destroy constructor instances

本文关键字:实例 构造函数      更新时间:2023-09-26
function ConstructMe(msg) {
    this.message = msg;   
}
instances = {
    instance1: new ConstructMe('msg1'),   
    instance2: new ConstructMe('msg2'),   
    instance3: new ConstructMe('msg3'),   
    instance4: new ConstructMe('msg4'),   
    instance5: new ConstructMe('msg5')
}

如果我有这个构造函数,并且我在对象中构建了它的实例(如上所示(,那么以后我将如何销毁它们?我想确保它们不再可访问,但也要确保它们不再是无用的地方。

删除对象是否有效?或者实例只会无名地保留在内存中的某个地方?

就我而言,我沿着应用程序中的某些操作创建了许多实例,我想确保保持内存干净,不要让事情闲逛、混乱......

期待您的反馈

Javascript 不是这样工作的。它是一种垃圾回收语言。从技术上讲,您可以执行以下操作:

delete instances.instance3;

这应该从instances对象中删除属性,但实际上您很少需要担心它。JavaScript 运行时将在您之后负责清理*

*从技术上讲,您仍然可以在javascript中创建内存泄漏,但在绝大多数情况下,您无需担心。

JavaScript 内存管理的核心概念是可访问性的概念。

  • 假定一组可区分的对象是可访问的:这些对象称为根。通常,这些对象包括从调用堆栈中的任何位置引用的所有对象(即当前正在调用的函数中的所有局部变量和参数(以及任何全局变量。

  • 对象保存在内存中,同时可以通过引用或引用链从根访问它们。

  • 浏览器中有一个垃圾收集器,可以清除无法访问的对象占用的内存

因此,在您

的情况下,如果您的对象实例将不再可访问,垃圾收集器将自动删除此对象,在大多数情况下,您无需自己删除它们或进行任何内存管理